LMDZ
write_field_p.F90
Go to the documentation of this file.
2 implicit none
3 
4  interface writefield_p
6  end interface writefield_p
7 
8  contains
9 
10  subroutine write_field1d_p(name,Field)
12  USE write_field
13  implicit none
14 
15  integer, parameter :: MaxDim=1
16  character(len=*) :: name
17  real, dimension(:) :: Field
18  real, dimension(:),allocatable :: New_Field
19  integer, dimension(MaxDim) :: Dim
20 
21 
22  dim=shape(field)
23  allocate(new_field(dim(1)))
24  new_field(:)=field(:)
25  call gather_field(new_field,dim(1),1,0)
26 
27  if (mpi_rank==0) call writefield(name,new_field)
28 
29  end subroutine write_field1d_p
30 
31  subroutine write_field2d_p(name,Field)
33  USE write_field
34  implicit none
35 
36  integer, parameter :: MaxDim=2
37  character(len=*) :: name
38  real, dimension(:,:) :: Field
39  real, dimension(:,:),allocatable :: New_Field
40  integer, dimension(MaxDim) :: Dim
41 
42  dim=shape(field)
43  allocate(new_field(dim(1),dim(2)))
44  new_field(:,:)=field(:,:)
45  call gather_field(new_field(1,1),dim(1)*dim(2),1,0)
46 
47  if (mpi_rank==0) call writefield(name,new_field)
48 
49 
50  end subroutine write_field2d_p
51 
52  subroutine write_field3d_p(name,Field)
54  USE write_field
55  implicit none
56 
57  integer, parameter :: MaxDim=3
58  character(len=*) :: name
59  real, dimension(:,:,:) :: Field
60  real, dimension(:,:,:),allocatable :: New_Field
61  integer, dimension(MaxDim) :: Dim
62 
63  dim=shape(field)
64  allocate(new_field(dim(1),dim(2),dim(3)))
65  new_field(:,:,:)=field(:,:,:)
66  call gather_field(new_field(1,1,1),dim(1)*dim(2),dim(3),0)
67 
68  if (mpi_rank==0) call writefield(name,new_field)
69 
70  end subroutine write_field3d_p
71 
72 end module write_field_p
73 
subroutine gather_field(Field, ij, ll, rank)
integer, save mpi_rank
subroutine write_field1d_p(name, Field)
subroutine write_field3d_p(name, Field)
subroutine write_field2d_p(name, Field)