- Timestamp:
- 2017-06-19T18:16:30+02:00 (7 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/domain_def.xml
r6499 r8191 191 191 </domain> 192 192 193 <domain_group id="grid_N"> 194 <domain id="grid_N" long_name="grid nomask"/> 195 </domain_group> 193 196 194 197 </domain_definition> -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/iodef.xml
r6487 r8191 79 79 </context> 80 80 81 <context id="nemo_rst" > 82 83 <domain_definition src="./domain_def.xml"/> 84 85 <grid_definition> 86 <grid id="grid_T_2D" > 87 <domain id="grid_T" /> 88 </grid> 89 <grid id="grid_T_3D" > 90 <domain id="grid_T" /> 91 <axis id="deptht" /> 92 </grid> 93 <grid id="grid_U_2D" > 94 <domain id="grid_U" /> 95 </grid> 96 <grid id="grid_U_3D" > 97 <domain id="grid_U" /> 98 <axis id="depthu" /> 99 </grid> 100 <grid id="grid_V_2D" > 101 <domain id="grid_V" /> 102 </grid> 103 <grid id="grid_V_3D" > 104 <domain id="grid_V" /> 105 <axis id="depthv" /> 106 </grid> 107 <grid id="grid_W_2D" > 108 <domain id="grid_W" /> 109 </grid> 110 <grid id="grid_W_3D" > 111 <domain id="grid_W" /> 112 <axis id="depthw" /> 113 </grid> 114 <grid id="scalarpoint" /> 115 116 <grid id="Vgrid"> 117 <domain domain_ref="ptr" /> 118 <axis axis_ref="deptht" /> 119 </grid> 120 121 <grid id="grid_N" > 122 <domain domain_ref="grid_N" /> 123 </grid> 124 <grid id="grid_N_3D" > 125 <domain domain_ref="grid_N" /> 126 <axis axis_ref="deptht" /> 127 </grid> 128 129 </grid_definition> 130 131 </context> 81 132 82 133 <context id="xios"> -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/CONFIG/SHARED/namelist_ref
r7540 r8191 50 50 ln_clobber = .false. ! clobber (overwrite) an existing file 51 51 nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) 52 ln_xios_read = .FALSE. ! use XIOS to read restart file (only for a single file restart) 52 53 / 53 54 ! -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90
r7747 r8191 343 343 ENDIF 344 344 ENDIF 345 <<<<<<< .working 345 346 346 347 IF( iom_use("sopht_vt") .OR. iom_use("sopst_vs") ) THEN … … 433 434 ENDIF 434 435 #endif 436 ======= 437 438 IF( iom_use("sopht_vt") .OR. iom_use("sopst_vs") ) THEN 439 z2d(1,:) = htr_vt(:,1) * rc_pwatt ! (conversion in PW) 440 DO ji = 1, jpi 441 z2d(ji,:) = z2d(1,:) 442 ENDDO 443 cl1 = 'sopht_vt' 444 CALL iom_put( TRIM(cl1), z2d ) 445 z2d(1,:) = str_vs(:,1) * rc_ggram ! (conversion in Gg) 446 DO ji = 1, jpi 447 z2d(ji,:) = z2d(1,:) 448 ENDDO 449 cl1 = 'sopst_vs' 450 CALL iom_put( TRIM(cl1), z2d ) 451 IF( ln_subbas ) THEN 452 DO jn=2,nptr 453 z2d(1,:) = htr_vt(:,jn) * rc_pwatt ! (conversion in PW) 454 DO ji = 1, jpi 455 z2d(ji,:) = z2d(1,:) 456 ENDDO 457 cl1 = TRIM('sopht_vt_'//clsubb(jn)) 458 CALL iom_put( cl1, z2d ) 459 z2d(1,:) = str_vs(:,jn) * rc_ggram ! (conversion in Gg) 460 DO ji = 1, jpi 461 z2d(ji,:) = z2d(1,:) 462 ENDDO 463 cl1 = TRIM('sopst_vs_'//clsubb(jn)) 464 CALL iom_put( cl1, z2d ) 465 ENDDO 466 ENDIF 467 ENDIF 468 469 #ifdef key_diaeiv 470 IF(lk_traldf_eiv) THEN 471 IF( iom_use("sophteiv") .OR. iom_use("sopsteiv") ) THEN 472 z2d(1,:) = htr_eiv(:,1) * rc_pwatt ! (conversion in PW) 473 DO ji = 1, jpi 474 z2d(ji,:) = z2d(1,:) 475 ENDDO 476 cl1 = 'sophteiv' 477 CALL iom_put( TRIM(cl1), z2d ) 478 z2d(1,:) = str_eiv(:,1) * rc_ggram ! (conversion in Gg) 479 DO ji = 1, jpi 480 z2d(ji,:) = z2d(1,:) 481 ENDDO 482 cl1 = 'sopsteiv' 483 CALL iom_put( TRIM(cl1), z2d ) 484 IF( ln_subbas ) THEN 485 DO jn=2,nptr 486 z2d(1,:) = htr_eiv(:,jn) * rc_pwatt ! (conversion in PW) 487 DO ji = 1, jpi 488 z2d(ji,:) = z2d(1,:) 489 ENDDO 490 cl1 = TRIM('sophteiv_'//clsubb(jn)) 491 CALL iom_put( cl1, z2d ) 492 z2d(1,:) = str_eiv(:,jn) * rc_ggram ! (conversion in Gg) 493 DO ji = 1, jpi 494 z2d(ji,:) = z2d(1,:) 495 ENDDO 496 cl1 = TRIM('sopsteiv_'//clsubb(jn)) 497 CALL iom_put( cl1, z2d ) 498 ENDDO 499 ENDIF 500 ENDIF 501 ENDIF 502 #endif 503 >>>>>>> .merge-right.r7923 435 504 ! 436 505 ENDIF -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r7651 r8191 157 157 IF( iom_use("e3tdef") ) & 158 158 CALL iom_put( "e3tdef" , ( ( fse3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 159 <<<<<<< .working 159 160 CALL iom_put("tpt_dep", fsdept_n(:,:,:) ) 160 161 CALL iom_put("wpt_dep", fsdepw_n(:,:,:) ) 162 ======= 163 CALL iom_put("tpt_dep", fsdept_n(:,:,:) ) 164 >>>>>>> .merge-right.r7923 161 165 162 166 … … 250 254 CALL iom_put( "avt" , avt ) ! T vert. eddy diff. coef. 251 255 CALL iom_put( "avm" , avmu ) ! T vert. eddy visc. coef. 256 #if defined key_zdftke || defined key_esopa 252 257 IF( lk_zdftke ) THEN 253 258 CALL iom_put( "tke" , en ) ! TKE budget: Turbulent Kinetic Energy 254 259 CALL iom_put( "tke_niw" , e_niw ) ! TKE budget: Near-inertial waves 255 260 ENDIF 261 #endif 256 262 CALL iom_put( "avs" , fsavs(:,:,:) ) ! S vert. eddy diff. coef. (useful only with key_zdfddm) 257 263 ! Log of eddy diff coef -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
r6487 r8191 330 330 CALL iom_get( numror, 'ndastp', zndastp ) 331 331 ndastp = NINT( zndastp ) 332 CALL iom_get( numror, 'adatrj', adatrj 332 CALL iom_get( numror, 'adatrj', adatrj, lrxios = lxios_read ) 333 333 ELSE 334 334 ! parameters correspondting to nit000 - 1 (as we start the step loop with a call to day) -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r6491 r8191 138 138 & nn_no , cn_exp , cn_ocerst_in, cn_ocerst_out, ln_rstart , ln_rstdate, nn_rstctl, & 139 139 & nn_it000, nn_itend , nn_date0 , nn_leapy , nn_istate , nn_stock , & 140 & nn_write, ln_dimgnnn, ln_mskland , ln_cfmeta , ln_clobber, nn_chunksz, nn_euler 140 & nn_write, ln_dimgnnn, ln_mskland , ln_cfmeta , ln_clobber, nn_chunksz, nn_euler, & 141 & ln_xios_read 141 142 NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, & 142 143 & nn_acc , rn_atfp , rn_rdt , rn_rdtmin , & … … 152 153 INTEGER :: ios ! Local integer output status for namelist read 153 154 !!---------------------------------------------------------------------- 154 155 ln_xios_read = .false. ! set in case ln_xios_read is not in namelist 155 156 REWIND( numnam_ref ) ! Namelist namrun in reference namelist : Parameters of the run 156 157 READ ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) … … 193 194 WRITE(numout,*) ' overwrite an existing file ln_clobber = ', ln_clobber 194 195 WRITE(numout,*) ' NetCDF chunksize (bytes) nn_chunksz = ', nn_chunksz 196 WRITE(numout,*) ' READ restart for a single file using XIOS ln_xios_read =', ln_xios_read 195 197 ENDIF 196 198 … … 207 209 nwrite = nn_write 208 210 neuler = nn_euler 211 lxios_read = ln_xios_read 209 212 IF ( neuler == 1 .AND. .NOT. ln_rstart ) THEN 210 213 WRITE(ctmp1,*) 'ln_rstart =.FALSE., nn_euler is forced to 0 ' -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
r6491 r8191 49 49 LOGICAL :: ln_clobber !: clobber (overwrite) an existing file 50 50 INTEGER :: nn_chunksz !: chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) 51 LOGICAL :: ln_xios_read !: use xios to read single file restart 51 52 #if defined key_netcdf4 52 53 !!---------------------------------------------------------------------- -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r7750 r8191 41 41 USE dianam ! build name of file 42 42 USE xios 43 USE iom_def, ONLY : max_rst_fields, rst_fields 43 44 # endif 44 45 USE ioipsl, ONLY : ju2ymds ! for calendar 45 46 USE crs ! Grid coarsening 47 USE lib_fortran 46 48 47 49 IMPLICIT NONE … … 62 64 PRIVATE iom_set_domain_attr, iom_set_axis_attr, iom_set_field_attr, iom_set_file_attr, iom_get_file_attr, iom_set_grid_attr 63 65 PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_update_file_name, iom_sdate 66 PRIVATE set_rst_vars, set_rstr_active 64 67 # endif 65 68 … … 136 139 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 137 140 END SELECT 141 138 142 #endif 139 143 ! horizontal grid definition … … 142 146 143 147 IF( TRIM(cdname) == TRIM(cxios_context) ) THEN 144 CALL set_grid( "T", glamt, gphit )145 CALL set_grid( "U", glamu, gphiu )146 CALL set_grid( "V", glamv, gphiv )147 CALL set_grid( "W", glamt, gphit )148 CALL set_grid( "T", glamt, gphit, ln_mskland ) 149 CALL set_grid( "U", glamu, gphiu, ln_mskland ) 150 CALL set_grid( "V", glamv, gphiv, ln_mskland ) 151 CALL set_grid( "W", glamt, gphit, ln_mskland ) 148 152 CALL set_grid_znl( gphit ) 153 CALL set_grid("N",glamt, gphit, .FALSE.) ! not masked values 149 154 ! 150 IF( ln_cfmeta ) THEN ! Add additional grid metadata155 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(rxios_context)) THEN ! Add additional grid metadata 151 156 CALL iom_set_domain_attr("grid_T", area = e12t(nldi:nlei, nldj:nlej)) 152 157 CALL iom_set_domain_attr("grid_U", area = e12u(nldi:nlei, nldj:nlej)) … … 163 168 CALL dom_grid_crs ! Save the parent grid information & Switch to coarse grid domain 164 169 ! 165 CALL set_grid( "T", glamt_crs, gphit_crs )166 CALL set_grid( "U", glamu_crs, gphiu_crs )167 CALL set_grid( "V", glamv_crs, gphiv_crs )168 CALL set_grid( "W", glamt_crs, gphit_crs )170 CALL set_grid( "T", glamt_crs, gphit_crs, ln_mskland ) 171 CALL set_grid( "U", glamu_crs, gphiu_crs, ln_mskland ) 172 CALL set_grid( "V", glamv_crs, gphiv_crs, ln_mskland ) 173 CALL set_grid( "W", glamt_crs, gphit_crs, ln_mskland ) 169 174 CALL set_grid_znl( gphit_crs ) 170 175 ! 171 176 CALL dom_grid_glo ! Return to parent grid domain 172 177 ! 173 IF( ln_cfmeta ) THEN ! Add additional grid metadata178 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(rxios_context)) THEN ! Add additional grid metadata 174 179 CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 175 180 CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) … … 227 232 228 233 ! automatic definitions of some of the xml attributs 229 CALL set_xmlatt 234 IF( TRIM(cdname) == TRIM(rxios_context)) THEN 235 !set names of the fields in restart file IF using XIOS to read/write data 236 CALL set_rst_vars() 237 !set which fields are to be read from restart file 238 CALL set_rstr_active() 239 ELSE 240 CALL set_xmlatt 241 ENDIF 230 242 231 243 CALL set_1point … … 244 256 END SUBROUTINE iom_init 245 257 258 259 SUBROUTINE set_rst_vars() 260 !set names for variables in restart file 261 262 rst_fields(:)%vname="NO_NAME"; rst_fields(:)%grid="NO_GRID" 263 264 rst_fields(1)%vname="rdt"; rst_fields(1)% grid="grid_scalar" 265 rst_fields(2)%vname="rdttra1"; rst_fields(2)% grid="grid_scalar" 266 rst_fields(3)%vname="un"; rst_fields(3)% grid="grid_N_3D" 267 rst_fields(4)%vname="ub"; rst_fields(4)% grid="grid_N_3D" 268 rst_fields(5)%vname="vn"; rst_fields(5)% grid="grid_N_3D" 269 rst_fields(6)%vname="vb"; rst_fields(6)% grid="grid_N_3D" 270 rst_fields(7)%vname="tn"; rst_fields(7)% grid="grid_N_3D" 271 rst_fields(8)%vname="tb"; rst_fields(8)% grid="grid_N_3D" 272 rst_fields(9)%vname="sn"; rst_fields(9)% grid="grid_N_3D" 273 rst_fields(10)%vname="sb"; rst_fields(10)%grid="grid_N_3D" 274 rst_fields(11)%vname="sshn"; rst_fields(11)%grid="grid_N" 275 rst_fields(12)%vname="sshb"; rst_fields(12)%grid="grid_N" 276 rst_fields(13)%vname="hdivn"; rst_fields(13)%grid="grid_N_3D" 277 rst_fields(14)%vname="hdivb"; rst_fields(14)%grid="grid_N_3D" 278 rst_fields(15)%vname="rhop"; rst_fields(15)%grid="grid_N_3D" 279 rst_fields(16)%vname="rotn"; rst_fields(16)%grid="grid_N_3D" 280 rst_fields(17)%vname="rotb"; rst_fields(17)%grid="grid_N_3D" 281 rst_fields(18)%vname="kt"; rst_fields(18)%grid="grid_scalar" 282 rst_fields(19)%vname="ndastp"; rst_fields(19)%grid="grid_scalar" 283 rst_fields(20)%vname="adatrj"; rst_fields(20)%grid="grid_scalar" 284 rst_fields(21)%vname="utau_b"; rst_fields(21)%grid="grid_N" 285 rst_fields(22)%vname="vtau_b"; rst_fields(22)%grid="grid_N" 286 rst_fields(23)%vname="qns_b"; rst_fields(23)%grid="grid_N" 287 rst_fields(24)%vname="emp_b"; rst_fields(24)%grid="grid_N" 288 rst_fields(25)%vname="sfx_b"; rst_fields(25)%grid="grid_N" 289 rst_fields(26)%vname="en" ; rst_fields(26)%grid="grid_N_3D" 290 rst_fields(27)%vname="avt"; rst_fields(27)%grid="grid_N_3D" 291 rst_fields(28)%vname="avm"; rst_fields(28)%grid="grid_N_3D" 292 rst_fields(29)%vname="avmu"; rst_fields(29)%grid="grid_N_3D" 293 rst_fields(30)%vname="avmv"; rst_fields(30)%grid="grid_N_3D" 294 rst_fields(31)%vname="dissl"; rst_fields(31)%grid="grid_N_3D" 295 rst_fields(32)%vname="sbc_hc_b"; rst_fields(32)%grid="grid_N" 296 rst_fields(33)%vname="sbc_sc_b"; rst_fields(33)%grid="grid_N" 297 rst_fields(34)%vname="qsr_hc_b"; rst_fields(34)%grid="grid_N_3D" 298 rst_fields(35)%vname="gcx"; rst_fields(35)%grid="grid_N" 299 rst_fields(36)%vname="gcxb"; rst_fields(36)%grid="grid_N" 300 rst_fields(37)%vname="fraqsr_1lev"; rst_fields(37)%grid="grid_N" 301 rst_fields(38)%vname="greenland_icesheet_mass" 302 rst_fields(38)%grid="grid_scalar" 303 rst_fields(39)%vname="greenland_icesheet_timelapsed" 304 rst_fields(39)%grid="grid_scalar" 305 rst_fields(40)%vname="greenland_icesheet_mass_roc" 306 rst_fields(40)%grid="grid_scalar" 307 rst_fields(41)%vname="antarctica_icesheet_mass" 308 rst_fields(41)%grid="grid_scalar" 309 rst_fields(42)%vname="antarctica_icesheet_timelapsed" 310 rst_fields(42)%grid="grid_scalar" 311 rst_fields(43)%vname="antarctica_icesheet_mass_roc" 312 rst_fields(43)%grid="grid_scalar" 313 rst_fields(44)%vname="rhd"; rst_fields(44)%grid="grid_N_3D" 314 rst_fields(45)%vname="frc_v"; rst_fields(45)%grid="grid_scalar" 315 rst_fields(46)%vname="frc_t"; rst_fields(46)%grid="grid_scalar" 316 rst_fields(47)%vname="frc_s"; rst_fields(47)%grid="grid_scalar" 317 rst_fields(48)%vname="frc_wn_t"; rst_fields(48)%grid="grid_scalar" 318 rst_fields(49)%vname="frc_wn_s"; rst_fields(49)%grid="grid_scalar" 319 rst_fields(50)%vname="ssh_ini"; rst_fields(50)%grid="grid_N" 320 rst_fields(51)%vname="e3t_ini"; rst_fields(51)%grid="grid_N_3D" 321 rst_fields(52)%vname="hc_loc_ini"; rst_fields(52)%grid="grid_N_3D" 322 rst_fields(53)%vname="sc_loc_ini"; rst_fields(53)%grid="grid_N_3D" 323 rst_fields(54)%vname="ssh_hc_loc_ini"; rst_fields(54)%grid="grid_N" 324 rst_fields(55)%vname="ssh_sc_loc_ini"; rst_fields(55)%grid="grid_N" 325 rst_fields(56)%vname="fse3t_b"; rst_fields(56)%grid="grid_N_3D" 326 rst_fields(57)%vname="fse3t_n"; rst_fields(57)%grid="grid_N_3D" 327 rst_fields(58)%vname="tilde_e3t_b"; rst_fields(58)%grid="grid_N" 328 rst_fields(59)%vname="tilde_e3t_n"; rst_fields(59)%grid="grid_N" 329 rst_fields(60)%vname="hdiv_lf"; rst_fields(60)%grid="grid_N" 330 rst_fields(61)%vname="ub2_b"; rst_fields(61)%grid="grid_N" 331 rst_fields(62)%vname="vb2_b"; rst_fields(62)%grid="grid_N" 332 rst_fields(63)%vname="sshbb_e"; rst_fields(63)%grid="grid_N" 333 rst_fields(64)%vname="ubb_e"; rst_fields(64)%grid="grid_N" 334 rst_fields(65)%vname="vbb_e"; rst_fields(65)%grid="grid_N" 335 rst_fields(66)%vname="sshb_e"; rst_fields(66)%grid="grid_N" 336 rst_fields(67)%vname="ub_e"; rst_fields(67)%grid="grid_N" 337 rst_fields(68)%vname="vb_e"; rst_fields(68)%grid="grid_N" 338 rst_fields(69)%vname="fwf_isf_b"; rst_fields(69)%grid="grid_N" 339 rst_fields(70)%vname="isf_sc_b"; rst_fields(70)%grid="grid_N" 340 rst_fields(71)%vname="isf_hc_b"; rst_fields(71)%grid="grid_N" 341 rst_fields(72)%vname="ssh_ibb"; rst_fields(72)%grid="grid_N" 342 rst_fields(73)%vname="rnf_b"; rst_fields(73)%grid="grid_N" 343 rst_fields(74)%vname="rnf_hc_b"; rst_fields(74)%grid="grid_N" 344 rst_fields(75)%vname="rnf_sc_b"; rst_fields(75)%grid="grid_N" 345 rst_fields(76)%vname="nn_fsbc"; rst_fields(76)%grid="grid_scalar" 346 rst_fields(77)%vname="ssu_m"; rst_fields(77)%grid="grid_N" 347 rst_fields(78)%vname="ssv_m"; rst_fields(78)%grid="grid_N" 348 rst_fields(79)%vname="sst_m"; rst_fields(79)%grid="grid_N" 349 rst_fields(80)%vname="sss_m"; rst_fields(80)%grid="grid_N" 350 rst_fields(81)%vname="ssh_m"; rst_fields(81)%grid="grid_N" 351 rst_fields(82)%vname="e3t_m"; rst_fields(82)%grid="grid_N" 352 rst_fields(83)%vname="frq_m"; rst_fields(83)%grid="grid_N" 353 rst_fields(84)%vname="avmb"; rst_fields(84)%grid="Vgrid" 354 rst_fields(85)%vname="avtb"; rst_fields(85)%grid="Vgrid" 355 356 END SUBROUTINE set_rst_vars 357 358 359 SUBROUTINE set_rstr_active() 360 !sets enabled = .TRUE. for each field in restart file 361 #if defined key_xios2 362 CHARACTER(len=256) :: rst_file 363 TYPE(xios_field) :: field_hdl 364 TYPE(xios_file) :: file_hdl 365 TYPE(xios_filegroup) :: filegroup_hdl 366 INTEGER :: i 367 CHARACTER(lc) :: clpath 368 369 clpath = TRIM(cn_ocerst_indir) 370 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 371 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 372 rst_file = TRIM(cn_ocerst_indir)//TRIM(cn_ocerst_in) 373 ELSE 374 rst_file = TRIM(cn_ocerst_indir)//'1_'//TRIM(cn_ocerst_in) 375 ENDIF 376 !set name of the restart file and enable available fields 377 if(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS) to: ',rst_file 378 CALL xios_get_handle("file_definition", filegroup_hdl ) 379 CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart') 380 CALL xios_set_file_attr( "rrestart", name=trim(rst_file), type="one_file", & 381 par_access="collective", enabled=.TRUE., mode="read", & 382 output_freq=xios_timestep) 383 !defin files for restart context 384 DO i = 1, max_rst_fields 385 IF( TRIM(rst_fields(i)%vname) /= "NO_NAME") THEN 386 IF( iom_varid( numror, TRIM(rst_fields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN 387 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname)) 388 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_fields(i)%vname), & 389 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant") 390 if(lwp) WRITE(numout,*) TRIM(rst_fields(i)%vname), ' enabled' 391 ENDIF 392 ENDIF 393 END DO 394 #endif 395 END SUBROUTINE set_rstr_active 246 396 247 397 SUBROUTINE iom_swap( cdname ) … … 687 837 ! value for the 2nd dimension (netcdf only) 688 838 ! 839 LOGICAL :: lxios ! local definition for XIOS read 689 840 LOGICAL :: llnoov ! local definition to read overlap 690 841 LOGICAL :: luse_jattr ! local definition to read open_ocean_jstart file attribute … … 713 864 !--------------------------------------------------------------------- 714 865 ! 715 clname = iom_file(kiomid)%name ! esier to read 716 clinfo = ' iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 717 ! local definition of the domain ? 866 REAL(wp) :: gma, gmi 867 lxios = .FALSE. 868 if(PRESENT(lrxios)) lxios = lrxios 869 idvar = iom_varid( kiomid, cdvar ) 718 870 idom = kdom 719 ! do we read the overlap 720 ! ugly patch SM+JMM+RB to overwrite global definition in some cases 721 llnoov = (jpni * jpnj ) == jpnij .AND. .NOT. lk_agrif 722 ! check kcount and kstart optionals parameters... 723 IF( PRESENT(kcount) .AND. (.NOT. PRESENT(kstart)) ) CALL ctl_stop(trim(clinfo), 'kcount present needs kstart present') 724 IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 725 IF( PRESENT(kstart) .AND. idom /= jpdom_unknown .AND. idom /= jpdom_autoglo_xy ) & 871 872 IF(.NOT.lxios) THEN 873 clname = iom_file(kiomid)%name ! esier to read 874 clinfo = ' iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 875 ! local definition of the domain ? 876 ! do we read the overlap 877 ! ugly patch SM+JMM+RB to overwrite global definition in some cases 878 llnoov = (jpni * jpnj ) == jpnij .AND. .NOT. lk_agrif 879 ! check kcount and kstart optionals parameters... 880 IF( PRESENT(kcount) .AND. (.NOT. PRESENT(kstart)) ) CALL ctl_stop(trim(clinfo), 'kcount present needs kstart present') 881 IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 882 IF( PRESENT(kstart) .AND. idom /= jpdom_unknown .AND. idom /= jpdom_autoglo_xy ) & 726 883 & CALL ctl_stop(trim(clinfo), 'kstart present needs kdom = jpdom_unknown or kdom = jpdom_autoglo_xy') 727 884 … … 925 1082 IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 926 1083 927 !--- overlap areas and extra hallows (mpp) 928 IF( PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 929 CALL lbc_lnk( pv_r2d,'Z',-999.,'no0' ) 930 ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 931 ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 932 IF( icnt(3) == jpk ) THEN 933 CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 934 ELSE ! put some arbitrary value (a call to lbc_lnk will be done later...) 935 DO jj = nlcj+1, jpj ; pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :) ; END DO 936 DO ji = nlci+1, jpi ; pv_r3d(ji , : , :) = pv_r3d(nlei , : , :) ; END DO 937 ENDIF 938 ENDIF 939 940 ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 941 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk( pv_r2d,'Z',1. ) 942 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk( pv_r3d,'Z',1. ) 943 944 !--- Apply scale_factor and offset 945 zscf = iom_file(kiomid)%scf(idvar) ! scale factor 946 zofs = iom_file(kiomid)%ofs(idvar) ! offset 947 IF( PRESENT(pv_r1d) ) THEN 948 IF( zscf /= 1. ) pv_r1d(:) = pv_r1d(:) * zscf 949 IF( zofs /= 0. ) pv_r1d(:) = pv_r1d(:) + zofs 950 ELSEIF( PRESENT(pv_r2d) ) THEN 1084 !--- overlap areas and extra hallows (mpp) 1085 IF( PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 1086 CALL lbc_lnk( pv_r2d,'Z',-999.,'no0' ) 1087 ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 1088 ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 1089 IF( icnt(3) == jpk ) THEN 1090 CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 1091 ELSE ! put some arbitrary value (a call to lbc_lnk will be done later...) 1092 DO jj = nlcj+1, jpj ; pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :) ; END DO 1093 DO ji = nlci+1, jpi ; pv_r3d(ji , : , :) = pv_r3d(nlei , : , :) ; END DO 1094 ENDIF 1095 ENDIF 1096 ! 1097 ELSE 1098 ! return if istop == nstop is false 1099 RETURN 1100 ENDIF 1101 ELSE 1102 ! return if statment idvar > 0 .AND. istop == nstop is false 1103 RETURN 1104 ENDIF 1105 ! 1106 ELSE ! read using XIOS. Only if KEY_IOMPUT is defined 1107 #if defined key_iomput 1108 !would be good to be able to check which context is active and swap only if current is not restart 1109 CALL iom_swap( TRIM(rxios_context) ) 1110 IF( PRESENT(pv_r3d) ) THEN 1111 if(lwp) write(numout,*) 'XIOS RST READ (3D): ',trim(cdvar) 1112 CALL xios_recv_field( trim(cdvar), pv_r3d) 1113 IF(idom /= jpdom_unknown ) then 1114 CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 1115 ENDIF 1116 ELSEIF( PRESENT(pv_r2d) ) THEN 1117 if(lwp) write(numout,*) 'XIOS RST READ (2D): ', trim(cdvar) 1118 CALL xios_recv_field( trim(cdvar), pv_r2d) 1119 IF(idom /= jpdom_unknown ) THEN 1120 CALL lbc_lnk(pv_r2d,'Z',-999.,'no0') 1121 ENDIF 1122 ELSEIF( PRESENT(pv_r1d) ) THEN 1123 if(lwp) write(numout,*) 'XIOS RST READ (1D): ', trim(cdvar) 1124 CALL xios_recv_field( trim(cdvar), pv_r1d) 1125 ENDIF 1126 CALL iom_swap( TRIM(cxios_context) ) 1127 #else 1128 istop = istop + 1 1129 clinfo = 'Can not use XIOS in iom_get_123d, file: '//trim(clname)//', var:'//trim(cdvar) 1130 #endif 1131 ENDIF 1132 !some final adjustments 1133 ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 1134 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk( pv_r2d,'Z',1. ) 1135 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk( pv_r3d,'Z',1. ) 1136 1137 !--- Apply scale_factor and offset 1138 zscf = iom_file(kiomid)%scf(idvar) ! scale factor 1139 zofs = iom_file(kiomid)%ofs(idvar) ! offset 1140 IF( PRESENT(pv_r1d) ) THEN 1141 IF( zscf /= 1. ) pv_r1d(:) = pv_r1d(:) * zscf 1142 IF( zofs /= 0. ) pv_r1d(:) = pv_r1d(:) + zofs 1143 ELSEIF( PRESENT(pv_r2d) ) THEN 951 1144 !CDIR COLLAPSE 952 1145 IF( zscf /= 1.) pv_r2d(:,:) = pv_r2d(:,:) * zscf … … 957 1150 IF( zscf /= 1.) pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 958 1151 !CDIR COLLAPSE 959 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 960 ENDIF 961 ! 962 ENDIF 963 ! 964 ENDIF 965 ! 1152 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 1153 ENDIF 966 1154 END SUBROUTINE iom_get_123d 967 1155 … … 1367 1555 1368 1556 1369 SUBROUTINE set_grid( cdgrd, plon, plat )1557 SUBROUTINE set_grid( cdgrd, plon, plat, lmask ) 1370 1558 !!---------------------------------------------------------------------- 1371 1559 !! *** ROUTINE set_grid *** … … 1380 1568 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask 1381 1569 INTEGER :: ni,nj 1570 LOGICAL :: lmask 1382 1571 1383 1572 ni=nlei-nldi+1 ; nj=nlej-nldj+1 … … 1392 1581 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 1393 1582 1394 IF ( l n_mskland) THEN1583 IF ( lmask ) THEN 1395 1584 ! mask land points, keep values on coast line -> specific mask for U, V and W points 1396 1585 SELECT CASE ( cdgrd ) … … 1436 1625 ! Offset of coordinate representing bottom-left corner 1437 1626 SELECT CASE ( TRIM(cdgrd) ) 1438 CASE ('T', 'W' )1627 CASE ('T', 'W', 'N') 1439 1628 icnr = -1 ; jcnr = -1 1440 1629 CASE ('U') -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/iom_def.F90
r6491 r8191 51 51 !$AGRIF_DO_NOT_TREAT 52 52 INTEGER, PUBLIC :: iom_open_init = 0 !: used to initialize iom_file(:)%nfid to 0 53 !XIOS read restart 54 LOGICAL, PUBLIC :: lxios_read !: read single file restart using XIOS 55 LOGICAL, PUBLIC :: lxios_sini = .FALSE. ! is restart in a single file 56 LOGICAL, PUBLIC :: lxios_set = .FALSE. 53 57 54 58 TYPE, PUBLIC :: file_descriptor … … 70 74 END TYPE file_descriptor 71 75 TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC :: iom_file !: array containing the info for all opened files 76 77 INTEGER, PARAMETER, PUBLIC :: max_rst_fields = 85 78 ! CHARACTER(len=30),DIMENSION(max_rst_fields), PUBLIC :: rst_fields ! names of variables in restart file 79 80 TYPE, PUBLIC :: RST_FIELD 81 CHARACTER(len=30) :: vname ! names of variables in restart file 82 CHARACTER(len=30) :: grid 83 END TYPE RST_FIELD 84 TYPE(RST_FIELD), PUBLIC :: rst_fields(max_rst_fields) 85 72 86 !$AGRIF_END_DO_NOT_TREAT 73 87 -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r6755 r8191 218 218 ENDIF 219 219 CALL iom_open( TRIM(clpath)//cn_ocerst_in, numror, kiolib = jlibalt ) 220 ! are we using XIOS to read the data? Part above will have to modified once XIOS 221 ! can handle checking if variable is in the restart file (there will be no need to open 222 ! restart) 223 IF(.NOT.lxios_set) lxios_read = lxios_read.AND.lxios_sini 224 IF( lxios_read) THEN 225 if(.NOT.lxios_set) then 226 rxios_context = 'nemo_rst' 227 call iom_init( rxios_context ) 228 lxios_set = .TRUE. 229 endif 230 ENDIF 231 IF( TRIM(Agrif_CFixed()) /= '0' .AND. lxios_read) THEN 232 rxios_context = 'nemo_rst' 233 call iom_init( rxios_context ) 234 ENDIF 220 235 ENDIF 221 236 END SUBROUTINE rst_read_open -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r6486 r8191 68 68 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files 69 69 TYPE(FLD_N) :: sn_apr ! informations about the fields to be read 70 LOGICAL :: lxios_read ! read restart using XIOS? 70 71 !! 71 72 NAMELIST/namsbc_apr/ cn_dir, sn_apr, ln_ref_apr, rn_pref, ln_apr_obc … … 143 144 IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN 144 145 IF(lwp) WRITE(numout,*) 'sbc_apr: ssh_ibb read in the restart file' 145 CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb ) ! before inv. barometer ssh146 CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb, lrxios = lxios_read ) ! before inv. barometer ssh 146 147 ! 147 148 ELSE !* no restart: set from nit000 values -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
r7771 r8191 82 82 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zun, zvn, zwn 83 83 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdt, ztrds ! 3D workspace 84 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds ! 3D workspace 84 85 !!---------------------------------------------------------------------- 85 86 ! … … 125 126 IF( ln_diaptr ) CALL dia_ptr( zvn ) ! diagnose the effective MSF 126 127 ! 128 <<<<<<< .working 127 129 IF( l_trdtra ) THEN !* Save ta and sa trends 128 130 ALLOCATE(ztrdt( 1:jpi, 1:jpj, 1:jpk) ) … … 132 134 ENDIF 133 135 ! 136 ======= 137 IF( l_trdtra ) THEN !* Save ta and sa trends 138 CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 139 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 140 ztrds(:,:,:) = tsa(:,:,:,jp_sal) 141 ENDIF 142 ! 143 >>>>>>> .merge-right.r7923 134 144 SELECT CASE ( nadv ) !== compute advection trend and add it to general trend ==! 135 145 CASE ( 1 ) ; CALL tra_adv_cen2 ( kt, nit000, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) ! 2nd order centered … … 162 172 END SELECT 163 173 ! 174 <<<<<<< .working 164 175 IF( l_trdtra ) THEN ! save the advective trends for further diagnostics 165 176 DO jk = 1, jpkm1 … … 172 183 DEALLOCATE (ztrds) 173 184 ENDIF 185 ======= 186 IF( l_trdtra ) THEN ! save the advective trends for further diagnostics 187 DO jk = 1, jpkm1 188 ztrdt(:,:,jk) = tsa(:,:,jk,jp_tem) - ztrdt(:,:,jk) 189 ztrds(:,:,jk) = tsa(:,:,jk,jp_sal) - ztrds(:,:,jk) 190 END DO 191 CALL trd_tra( kt, 'TRA', jp_tem, jptra_totad, ztrdt ) 192 CALL trd_tra( kt, 'TRA', jp_sal, jptra_totad, ztrds ) 193 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 194 ENDIF 195 >>>>>>> .merge-right.r7923 174 196 ! ! print mean trends (used for debugging) 175 197 IF(ln_ctl) CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv - Ta: ', mask1=tmask, & -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90
r7771 r8191 86 86 REAL(wp) :: zfp_ui, zfp_vj, zfp_wk ! - - 87 87 REAL(wp) :: zfm_ui, zfm_vj, zfm_wk ! - - 88 <<<<<<< .working 88 89 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zwi, zwz 89 90 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz, zptry 90 91 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z2d 92 ======= 93 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwz 94 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz, zptry 95 REAL(wp), POINTER, DIMENSION(:,:) :: z2d 96 >>>>>>> .merge-right.r7923 91 97 !!---------------------------------------------------------------------- 92 98 ! … … 108 114 IF( cdtype == 'TRA' .AND. (iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") ) ) l_trans = .TRUE. 109 115 ! 116 <<<<<<< .working 110 117 IF( l_trd .OR. l_trans ) THEN 111 118 ALLOCATE(ztrdx(1:jpi, 1:jpj, 1:jpk)) 112 119 ALLOCATE(ztrdy(1:jpi, 1:jpj, 1:jpk)) 113 120 ALLOCATE(ztrdz(1:jpi, 1:jpj, 1:jpk)) 121 ======= 122 IF( l_trd .OR. l_trans ) THEN 123 CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 124 >>>>>>> .merge-right.r7923 114 125 ztrdx(:,:,:) = 0.e0 ; ztrdy(:,:,:) = 0.e0 ; ztrdz(:,:,:) = 0.e0 126 <<<<<<< .working 115 127 ALLOCATE(z2d(1:jpi, 1:jpj)) 116 ENDIF 117 ! 128 ======= 129 CALL wrk_alloc( jpi, jpj, z2d ) 130 >>>>>>> .merge-right.r7923 131 ENDIF 132 ! 133 <<<<<<< .working 118 134 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 119 135 ALLOCATE(zptry(1:jpi, 1:jpj, 1:jpk)) … … 121 137 ENDIF 122 138 ! 139 ======= 140 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 141 CALL wrk_alloc( jpi, jpj, jpk, zptry ) 142 zptry(:,:,:) = 0._wp 143 ENDIF 144 ! 145 >>>>>>> .merge-right.r7923 123 146 zwi(:,:,:) = 0.e0 ; 124 147 ! … … 308 331 END DO 309 332 ! 333 <<<<<<< .working 310 334 DEALLOCATE( zwi ) 311 335 DEALLOCATE( zwz ) … … 317 341 ENDIF 318 342 IF( cdtype == 'TRA' .AND. ln_diaptr ) DEALLOCATE( zptry ) 343 ======= 344 CALL wrk_dealloc( jpi, jpj, jpk, zwi, zwz ) 345 IF( l_trd .OR. l_trans ) THEN 346 CALL wrk_dealloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 347 CALL wrk_dealloc( jpi, jpj, z2d ) 348 ENDIF 349 IF( cdtype == 'TRA' .AND. ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, zptry ) 350 >>>>>>> .merge-right.r7923 319 351 ! 320 352 IF( nn_timing == 1 ) CALL timing_stop('tra_adv_tvd') … … 360 392 REAL(wp) :: zfp_ui, zfp_vj, zfp_wk ! - - 361 393 REAL(wp) :: zfm_ui, zfm_vj, zfm_wk ! - - 394 <<<<<<< .working 362 395 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zwx_sav , zwy_sav 363 396 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zwi, zwz, zhdiv, zwz_sav, zwzts … … 365 398 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zptry 366 399 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrs 400 ======= 401 REAL(wp), POINTER, DIMENSION(:,: ) :: zwx_sav , zwy_sav 402 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwz, zhdiv, zwz_sav, zwzts 403 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz 404 REAL(wp), POINTER, DIMENSION(:,:,:) :: zptry 405 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrs 406 >>>>>>> .merge-right.r7923 367 407 !!---------------------------------------------------------------------- 368 408 ! … … 394 434 ENDIF 395 435 ! 436 <<<<<<< .working 396 437 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 397 438 ALLOCATE(zptry(1:jpi, 1:jpj, 1:jpk)) … … 399 440 ENDIF 400 441 ! 442 ======= 443 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 444 CALL wrk_alloc( jpi, jpj,jpk, zptry ) 445 zptry(:,:,:) = 0._wp 446 ENDIF 447 ! 448 >>>>>>> .merge-right.r7923 401 449 zwi(:,:,:) = 0._wp 402 450 z_rzts = 1._wp / REAL( jnzts, wp ) … … 633 681 634 682 IF( cdtype == 'TRA' .AND. ln_diaptr ) DEALLOCATE(zptry ) 683 IF( cdtype == 'TRA' .AND. ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, zptry ) 635 684 ! 636 685 IF( nn_timing == 1 ) CALL timing_stop('tra_adv_tvd_zts') -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
r7771 r8191 106 106 INTEGER :: ji, jj, jk, jn ! dummy loop indices 107 107 INTEGER :: ikt 108 <<<<<<< .working 108 109 REAL(wp) :: zmsku, zabe1, zcof1, zcoef3 ! local scalars 109 110 REAL(wp) :: zmskv, zabe2, zcof2, zcoef4 ! - - … … 113 114 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax, ztray, ztraz 114 115 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax_T, ztray_T, ztraz_T 116 ======= 117 REAL(wp) :: zmsku, zabe1, zcof1, zcoef3 ! local scalars 118 REAL(wp) :: zmskv, zabe2, zcof2, zcoef4 ! - - 119 REAL(wp) :: zcoef0, zbtr ! - - 120 REAL(wp), POINTER, DIMENSION(:,: ) :: z2d 121 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdkt, zdk1t, zdit, zdjt, ztfw 122 >>>>>>> .merge-right.r7923 123 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax, ztray, ztraz 124 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax_T, ztray_T, ztraz_T 115 125 !!---------------------------------------------------------------------- 116 126 ! 117 127 IF( nn_timing == 1 ) CALL timing_start('tra_ldf_iso') 118 128 ! 129 <<<<<<< .working 119 130 ALLOCATE( z2d(1:jpi, 1:jpj)) 120 131 ALLOCATE( zdit(1:jpi, 1:jpj, 1:jpk)) … … 131 142 ALLOCATE( ztraz_T(1:jpi,1:jpj,1:jpk)) 132 143 ENDIF 144 ======= 145 CALL wrk_alloc( jpi, jpj, z2d ) 146 CALL wrk_alloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t) 147 ALLOCATE( ztrax(jpi,jpj,jpk), ztray(jpi,jpj,jpk), ztraz(jpi,jpj,jpk) ) 148 IF( l_trdtra .and. cdtype == 'TRA' ) ALLOCATE( ztrax_T(jpi,jpj,jpk), ztray_T(jpi,jpj,jpk), ztraz_T(jpi,jpj,jpk) ) 149 >>>>>>> .merge-right.r7923 133 150 ! 134 151 … … 347 364 END DO 348 365 ! 366 <<<<<<< .working 349 367 IF( l_trdtra .AND. cdtype == "TRA" ) THEN ! save the horizontal component of diffusive trends for further diagnostics 350 368 CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_x, ztrax_T ) … … 355 373 CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_z1, ztraz ) ! 356 374 ENDIF 375 ======= 376 IF( l_trdtra .AND. cdtype == "TRA" ) THEN ! save the horizontal component of diffusive trends for further diagnostics 377 CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_x, ztrax_T ) 378 CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_x, ztrax ) 379 CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_y, ztray_T ) 380 CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_y, ztray ) 381 CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_z1, ztraz_T ) ! This is the first part of the vertical component 382 CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_z1, ztraz ) ! 383 ENDIF 384 ! 385 CALL wrk_dealloc( jpi, jpj, z2d ) 386 CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t ) 387 >>>>>>> .merge-right.r7923 388 DEALLOCATE( ztrax, ztray, ztraz ) 389 IF( l_trdtra .and. cdtype == 'TRA' ) DEALLOCATE( ztrax_T, ztray_T, ztraz_T ) 357 390 ! 358 391 DEALLOCATE( z2d )
Note: See TracChangeset
for help on using the changeset viewer.