source: tags/ORCHIDEE_2_1/ORCHIDEE/src_parallel/orch_write_field_p.f90 @ 6593

Last change on this file since 6593 was 4470, checked in by josefine.ghattas, 7 years ago

Change adresse for orchidee-help in the comments.

  • Property svn:keywords set to HeadURL Date Author Revision
File size: 6.1 KB
Line 
1! ==============================================================================================================================
2! MODULE   : orch_Write_Field_p
3!
4! CONTACT      : orchidee-help _at_ listes.ipsl.fr
5!
6! LICENCE      : IPSL (2006)
7! This software is governed by the CeCILL licence see ORCHIDEE/ORCHIDEE_CeCILL.LIC
8!
9!>\BRIEF     Set of interfaces to create netcdf output files to test values of variables in parallel mode.
10!!
11!! \n DESCRIPTION  : Set of interfaces to create netcdf output files to test values of variables in parallel mode.
12!!                   IMPORTANT NOTICE: These subroutines have not been tested in hybrid run mode using MPI-OMP paralelization
13!!                                     using more than 1 threds OMP. It will probably not work!
14!!
15!! RECENT CHANGE(S): None
16!!
17!! REFERENCES(S)    : None
18!!
19!! SVN              :
20!! $HeadURL$
21!! $Date$
22!! $Revision$
23!! \n
24!_ ================================================================================================================================
25MODULE Orch_Write_field_p
26 
27  !! ==============================================================================================================================
28  !! INTERFACE   :  WriteField_p
29  !!
30  !>\BRIEF         set of routines to write real fields (of 1d, 2d, 3d, 4d) in netcdf output file
31  !!
32  !! DESCRIPTION  : set of routines to write real fields (of 1d, 2d, 3d, 4d) in netcdf output file
33  !!                CALL WriteField_p("MyVariable", variable_array)
34  !!                will create a file MyVariable.nc with all value of variable_array
35  !!
36  !! \n
37  !_ ================================================================================================================================
38  INTERFACE WriteField_p
39    MODULE PROCEDURE WriteField_4d_p,WriteField_3d_p,WriteField_2d_p
40  END INTERFACE WriteField_p
41 
42  !! ==============================================================================================================================
43  !! INTERFACE   :  WriteFieldI_p
44  !!
45  !>\BRIEF         set of routines to write integer fields (of 1d, 2d, 3d, 4d) in netcdf output file
46  !!
47  !! DESCRIPTION  : set of routines to write integer fields (of 1d, 2d, 3d, 4d) in netcdf output file
48  !!                CALL WriteFieldI_p("MyVariable", variable_array)
49  !!                will create a file MyVariable.nc with all value of variable_array
50  !!
51  !! \n
52  !_ ================================================================================================================================
53  INTERFACE WriteFieldI_p
54    MODULE PROCEDURE WriteFieldI_3d_p,WriteFieldI_2d_p,WriteFieldI_1d_p
55  END INTERFACE WriteFieldI_p 
56 
57 
58CONTAINS
59
60  SUBROUTINE init_WriteField_p
61  USE mod_orchidee_para
62  USE Orch_Write_Field, ONLY : Init_WriteField
63  IMPLICIT NONE
64    IF (is_root_prc) CALL Init_WriteField(iim_g,jjm_g,nbp_glo,index_g)
65   
66  END SUBROUTINE init_WriteField_p
67
68  SUBROUTINE WriteField_4d_p(name,Field)
69    USE mod_orchidee_para
70    USE Orch_Write_Field, ONLY : WriteField
71    IMPLICIT NONE
72      CHARACTER(len=*) :: name
73      REAL, DIMENSION(:,:,:,:) :: Field 
74      INTEGER, DIMENSION(4) :: Dim
75     
76      REAL, ALLOCATABLE, DIMENSION(:,:,:,:) :: Field_g
77     
78      Dim=SHAPE(Field)
79     
80      ALLOCATE(Field_g(iim_g,jjm_g,DIM(3),DIM(4)))
81      CALL Gather2D_mpi(Field,Field_g)
82
83      IF (is_root_prc) CALL WriteField(name,Field_g) 
84     
85      DEALLOCATE(Field_g)
86  END SUBROUTINE WriteField_4d_p
87   
88  SUBROUTINE WriteField_3d_p(name,Field)
89    USE mod_orchidee_para
90    USE Orch_Write_Field, ONLY : WriteField
91    IMPLICIT NONE
92      CHARACTER(len=*) :: name
93      REAL, DIMENSION(:,:,:) :: Field 
94      INTEGER, DIMENSION(3) :: Dim
95     
96      REAL, ALLOCATABLE, DIMENSION(:,:,:) :: Field_g
97     
98     
99      Dim=SHAPE(Field)
100     
101      ALLOCATE(Field_g(iim_g,jjm_g,DIM(3)))
102      CALL Gather2D_mpi(Field,Field_g)
103
104      IF (is_root_prc) CALL WriteField(name,Field_g) 
105     
106      DEALLOCATE(Field_g)
107  END SUBROUTINE WriteField_3d_p
108
109  SUBROUTINE WriteField_2d_p(name,Field)
110    USE mod_orchidee_para
111    USE Orch_Write_Field, ONLY : WriteField
112    IMPLICIT NONE
113      CHARACTER(len=*) :: name
114      REAL, DIMENSION(:,:) :: Field 
115      INTEGER, DIMENSION(2) :: Dim
116     
117      REAL, ALLOCATABLE, DIMENSION(:,:) :: Field_g
118     
119     
120      Dim=SHAPE(Field)
121     
122      ALLOCATE(Field_g(iim_g,jjm_g))
123      CALL Gather2D_mpi(Field,Field_g)
124
125      IF (is_root_prc) CALL WriteField_gen(name,Field_g,2,Dim) 
126     
127      DEALLOCATE(Field_g)
128  END SUBROUTINE WriteField_2d_p
129
130  SUBROUTINE WriteFieldI_3d_p(name,Field)
131    USE mod_orchidee_para
132    USE Orch_Write_Field, ONLY : WriteFieldI
133    IMPLICIT NONE
134      CHARACTER(len=*) :: name
135      REAL, DIMENSION(:,:,:) :: Field 
136      INTEGER, DIMENSION(3) :: Dim
137     
138      REAL, ALLOCATABLE, DIMENSION(:,:,:) :: Field_g
139     
140     
141      Dim=SHAPE(Field)
142     
143      ALLOCATE(Field_g(nbp_glo,DIM(2),DIM(3)))
144      CALL gather(Field,Field_g)
145     
146      IF (is_root_prc) CALL WriteFieldI(name,Field_g) 
147     
148      DEALLOCATE(Field_g)
149  END SUBROUTINE WriteFieldI_3d_p
150
151  SUBROUTINE WriteFieldI_2d_p(name,Field)
152    USE mod_orchidee_para
153    USE Orch_Write_Field, ONLY : WriteFieldI
154    IMPLICIT NONE
155      CHARACTER(len=*) :: name
156      REAL, DIMENSION(:,:) :: Field 
157      INTEGER, DIMENSION(2) :: Dim
158     
159      REAL, ALLOCATABLE, DIMENSION(:,:) :: Field_g
160     
161     
162      Dim=SHAPE(Field)
163     
164      ALLOCATE(Field_g(nbp_glo,DIM(2)))
165      CALL gather(Field,Field_g)
166     
167      IF (is_root_prc) CALL WriteFieldI(name,Field_g) 
168     
169      DEALLOCATE(Field_g)
170  END SUBROUTINE WriteFieldI_2d_p   
171
172  SUBROUTINE WriteFieldI_1d_p(name,Field)
173    USE mod_orchidee_para
174    USE Orch_Write_Field, ONLY : WriteFieldI
175    IMPLICIT NONE
176      CHARACTER(len=*) :: name
177      REAL, DIMENSION(:) :: Field 
178      INTEGER, DIMENSION(1) :: Dim
179     
180      REAL, ALLOCATABLE, DIMENSION(:) :: Field_g
181     
182     
183      Dim=SHAPE(Field)
184     
185      ALLOCATE(Field_g(nbp_glo))
186      CALL gather(Field,Field_g)
187     
188      IF (is_root_prc) CALL WriteFieldI(name,Field_g) 
189     
190      DEALLOCATE(Field_g)
191  END SUBROUTINE WriteFieldI_1d_p   
192   
193END MODULE Orch_Write_field_p
Note: See TracBrowser for help on using the repository browser.