Changeset 3225
- Timestamp:
- Feb 19, 2024, 11:38:05 AM (10 months ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/changelog.txt
r3224 r3225 4507 4507 Follow-up of r3217, remove some unused "use ..." in leapfrog_nogcm which 4508 4508 cause problems when compiling gcm in parallel mode 4509 4510 == 19/02/2024 == EM 4511 Remove interactive checking with XIOS whether a field should be sent to it; 4512 some yet unresolved issues arise when using this in mixed MPI-OpenMP mode... -
trunk/LMDZ.MARS/libf/phymars/write_output_mod.F90
r3169 r3225 35 35 real, intent(in) :: field 36 36 37 logical :: is_active ! For XIOS, should this field be sent or not 38 37 39 call writediagfi(ngrid,field_name,title,units,0,(/field/)) 38 40 #ifdef CPP_XIOS 39 ! only send the field to xios if the user asked for it 40 if (xios_is_active_field(field_name)) call send_xios_field(field_name,field) 41 !is_active=xios_is_active_field(field_name) 42 is_active=.true. 43 ! only send the field to xios if the user asked for it 44 if (is_active) call send_xios_field(field_name,field) 41 45 #endif 42 46 … … 63 67 real, dimension(:), intent(in) :: field 64 68 69 logical :: is_active ! For XIOS, should this field be sent or not 70 65 71 call writediagfi(ngrid,field_name,title,units,2,field) 66 72 #ifdef CPP_XIOS 67 ! only send the field to xios if the user asked for it 68 if (xios_is_active_field(field_name)) call send_xios_field(field_name,field) 73 !is_active=xios_is_active_field(field_name) 74 is_active=.true. 75 ! only send the field to xios if the user asked for it 76 if (is_active) call send_xios_field(field_name,field) 69 77 #endif 70 78 … … 93 101 character(*), intent(in) :: units 94 102 real, dimension(:,:), intent(in) :: field 103 104 logical :: is_active ! For XIOS, should this field be sent or not 95 105 96 106 if (size(field,2) == nsoilmx) then … … 101 111 102 112 #ifdef CPP_XIOS 103 ! only send the field to xios if the user asked for it 104 if (xios_is_active_field(field_name)) call send_xios_field(field_name,field) 113 !is_active=xios_is_active_field(field_name) 114 is_active=.true. 115 ! only send the field to xios if the user asked for it 116 if (is_active) call send_xios_field(field_name,field) 105 117 #endif 106 118 … … 127 139 integer, intent(in) :: field 128 140 141 logical :: is_active ! For XIOS, should this field be sent or not 142 129 143 call writediagfi(ngrid,field_name,title,units,0,(/real(field)/)) 130 144 #ifdef CPP_XIOS 131 ! only send the field to xios if the user asked for it 132 if (xios_is_active_field(field_name)) call send_xios_field(field_name,(/real(field)/)) 145 !is_active=xios_is_active_field(field_name) 146 is_active=.true. 147 ! only send the field to xios if the user asked for it 148 if (is_active) call send_xios_field(field_name,(/real(field)/)) 133 149 #endif 134 150 … … 155 171 integer, dimension(:), intent(in) :: field 156 172 173 logical :: is_active ! For XIOS, should this field be sent or not 174 157 175 call writediagfi(ngrid,field_name,title,units,2,real(field)) 158 176 #ifdef CPP_XIOS 159 ! only send the field to xios if the user asked for it 160 if (xios_is_active_field(field_name)) call send_xios_field(field_name,real(field)) 177 !is_active=xios_is_active_field(field_name) 178 is_active=.true. 179 ! only send the field to xios if the user asked for it 180 if (is_active) call send_xios_field(field_name,real(field)) 161 181 #endif 162 182 … … 185 205 character(*), intent(in) :: units 186 206 integer, dimension(:,:), intent(in) :: field 207 208 logical :: is_active ! For XIOS, should this field be sent or not 187 209 188 210 if (size(field,2) == nsoilmx) then … … 192 214 endif 193 215 #ifdef CPP_XIOS 194 ! only send the field to xios if the user asked for it 195 if (xios_is_active_field(field_name)) call send_xios_field(field_name,real(field)) 216 !is_active=xios_is_active_field(field_name) 217 is_active=.true. 218 ! only send the field to xios if the user asked for it 219 if (is_active) call send_xios_field(field_name,real(field)) 196 220 #endif 197 221 … … 219 243 ! Local argument used to convert logical to real array 220 244 real, dimension(1) :: field_real 245 logical :: is_active ! For XIOS, should this field be sent or not 221 246 222 247 field_real = 0. … … 225 250 call writediagfi(ngrid,field_name,title,units,0,field_real) 226 251 #ifdef CPP_XIOS 227 ! only send the field to xios if the user asked for it 228 if (xios_is_active_field(field_name)) call send_xios_field(field_name,field_real) 252 !is_active=xios_is_active_field(field_name) 253 is_active=.true. 254 ! only send the field to xios if the user asked for it 255 if (is_active) call send_xios_field(field_name,field_real) 229 256 #endif 230 257 … … 252 279 ! Local argument used to convert logical to real 253 280 real, dimension(ngrid) :: field_real 281 logical :: is_active ! For XIOS, should this field be sent or not 254 282 255 283 field_real = 0. … … 258 286 call writediagfi(ngrid,field_name,title,units,2,field_real) 259 287 #ifdef CPP_XIOS 260 ! only send the field to xios if the user asked for it 261 if (xios_is_active_field(field_name)) call send_xios_field(field_name,field_real) 288 !is_active=xios_is_active_field(field_name) 289 is_active=.true. 290 ! only send the field to xios if the user asked for it 291 if (is_active) call send_xios_field(field_name,field_real) 262 292 #endif 263 293 … … 288 318 ! Local argument used to convert logical to real 289 319 real, allocatable, dimension(:,:) :: field_real 320 logical :: is_active ! For XIOS, should this field be sent or not 290 321 291 322 allocate(field_real(size(field,1),size(field,2))) … … 300 331 301 332 #ifdef CPP_XIOS 302 ! only send the field to xios if the user asked for it 303 if (xios_is_active_field(field_name)) call send_xios_field(field_name,field_real) 333 !is_active=xios_is_active_field(field_name) 334 is_active=.true. 335 ! only send the field to xios if the user asked for it 336 if (is_active) call send_xios_field(field_name,field_real) 304 337 #endif 305 338 -
trunk/LMDZ.MARS/libf/phymars/xios_output_mod.F90
r3169 r3225 309 309 FUNCTION xios_is_active_field(field_id) 310 310 USE xios, only: xios_field_is_active 311 USE mod_phys_lmdz_ para, only: bcast_omp311 USE mod_phys_lmdz_omp_transfert, only: bcast_omp 312 312 IMPLICIT NONE 313 313 LOGICAL :: xios_is_active_field … … 317 317 ! to be in the output file(s) 318 318 319 !$OMP BARRIER 319 320 !$OMP MASTER 320 321 xios_is_active_field = xios_field_is_active(field_id)
Note: See TracChangeset
for help on using the changeset viewer.