source: LMDZ6/branches/Amaury_dev/libf/dyn3dmem/write_field_p.F90

Last change on this file was 5119, checked in by abarral, 4 months ago

enforce PRIVATE by default in several modules, expose PUBLIC as needed
move eigen.f90 to obsolete/
(lint) aslong the way

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 1.8 KB
Line 
1module write_field_p
2IMPLICIT NONE
3 
4  interface WriteField_p
5    module procedure Write_field3d_p,Write_Field2d_p,Write_Field1d_p
6  end interface WriteField_p
7 
8  CONTAINS
9 
10  SUBROUTINE write_field1D_p(name,Field)
11    USE parallel_lmdz
12    USE lmdz_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)
32    USE parallel_lmdz
33    USE lmdz_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)
53    USE parallel_lmdz
54    USE lmdz_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
72END MODULE write_field_p
73 
Note: See TracBrowser for help on using the repository browser.