- Timestamp:
- 2017-06-20T10:46:27+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
r8191 r8193 191 191 </domain> 192 192 193 <domain_group id="grid_N">194 <domain id="grid_N" long_name="grid nomask"/>195 </domain_group>196 193 197 194 </domain_definition> -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/iodef.xml
r8191 r8193 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>132 81 133 82 <context id="xios"> -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/CONFIG/SHARED/namelist_ref
r8191 r8193 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)53 52 / 54 53 ! -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90
r8191 r8193 343 343 ENDIF 344 344 ENDIF 345 <<<<<<< .working346 345 347 346 IF( iom_use("sopht_vt") .OR. iom_use("sopst_vs") ) THEN … … 434 433 ENDIF 435 434 #endif 436 =======437 438 IF( iom_use("sopht_vt") .OR. iom_use("sopst_vs") ) THEN439 z2d(1,:) = htr_vt(:,1) * rc_pwatt ! (conversion in PW)440 DO ji = 1, jpi441 z2d(ji,:) = z2d(1,:)442 ENDDO443 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, jpi447 z2d(ji,:) = z2d(1,:)448 ENDDO449 cl1 = 'sopst_vs'450 CALL iom_put( TRIM(cl1), z2d )451 IF( ln_subbas ) THEN452 DO jn=2,nptr453 z2d(1,:) = htr_vt(:,jn) * rc_pwatt ! (conversion in PW)454 DO ji = 1, jpi455 z2d(ji,:) = z2d(1,:)456 ENDDO457 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, jpi461 z2d(ji,:) = z2d(1,:)462 ENDDO463 cl1 = TRIM('sopst_vs_'//clsubb(jn))464 CALL iom_put( cl1, z2d )465 ENDDO466 ENDIF467 ENDIF468 469 #ifdef key_diaeiv470 IF(lk_traldf_eiv) THEN471 IF( iom_use("sophteiv") .OR. iom_use("sopsteiv") ) THEN472 z2d(1,:) = htr_eiv(:,1) * rc_pwatt ! (conversion in PW)473 DO ji = 1, jpi474 z2d(ji,:) = z2d(1,:)475 ENDDO476 cl1 = 'sophteiv'477 CALL iom_put( TRIM(cl1), z2d )478 z2d(1,:) = str_eiv(:,1) * rc_ggram ! (conversion in Gg)479 DO ji = 1, jpi480 z2d(ji,:) = z2d(1,:)481 ENDDO482 cl1 = 'sopsteiv'483 CALL iom_put( TRIM(cl1), z2d )484 IF( ln_subbas ) THEN485 DO jn=2,nptr486 z2d(1,:) = htr_eiv(:,jn) * rc_pwatt ! (conversion in PW)487 DO ji = 1, jpi488 z2d(ji,:) = z2d(1,:)489 ENDDO490 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, jpi494 z2d(ji,:) = z2d(1,:)495 ENDDO496 cl1 = TRIM('sopsteiv_'//clsubb(jn))497 CALL iom_put( cl1, z2d )498 ENDDO499 ENDIF500 ENDIF501 ENDIF502 #endif503 >>>>>>> .merge-right.r7923504 435 ! 505 436 ENDIF -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r8191 r8193 157 157 IF( iom_use("e3tdef") ) & 158 158 CALL iom_put( "e3tdef" , ( ( fse3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 159 <<<<<<< .working160 159 CALL iom_put("tpt_dep", fsdept_n(:,:,:) ) 161 160 CALL iom_put("wpt_dep", fsdepw_n(:,:,:) ) 162 =======163 CALL iom_put("tpt_dep", fsdept_n(:,:,:) )164 >>>>>>> .merge-right.r7923165 161 166 162 … … 254 250 CALL iom_put( "avt" , avt ) ! T vert. eddy diff. coef. 255 251 CALL iom_put( "avm" , avmu ) ! T vert. eddy visc. coef. 256 #if defined key_zdftke || defined key_esopa257 252 IF( lk_zdftke ) THEN 258 253 CALL iom_put( "tke" , en ) ! TKE budget: Turbulent Kinetic Energy 259 254 CALL iom_put( "tke_niw" , e_niw ) ! TKE budget: Near-inertial waves 260 255 ENDIF 261 #endif262 256 CALL iom_put( "avs" , fsavs(:,:,:) ) ! S vert. eddy diff. coef. (useful only with key_zdfddm) 263 257 ! Log of eddy diff coef -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
r8191 r8193 330 330 CALL iom_get( numror, 'ndastp', zndastp ) 331 331 ndastp = NINT( zndastp ) 332 CALL iom_get( numror, 'adatrj', adatrj , lrxios = lxios_read)332 CALL iom_get( numror, 'adatrj', adatrj ) 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
r8191 r8193 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, & 141 & ln_xios_read 140 & nn_write, ln_dimgnnn, ln_mskland , ln_cfmeta , ln_clobber, nn_chunksz, nn_euler 142 141 NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, & 143 142 & nn_acc , rn_atfp , rn_rdt , rn_rdtmin , & … … 153 152 INTEGER :: ios ! Local integer output status for namelist read 154 153 !!---------------------------------------------------------------------- 155 ln_xios_read = .false. ! set in case ln_xios_read is not in namelist 154 156 155 REWIND( numnam_ref ) ! Namelist namrun in reference namelist : Parameters of the run 157 156 READ ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) … … 194 193 WRITE(numout,*) ' overwrite an existing file ln_clobber = ', ln_clobber 195 194 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_read197 195 ENDIF 198 196 … … 209 207 nwrite = nn_write 210 208 neuler = nn_euler 211 lxios_read = ln_xios_read212 209 IF ( neuler == 1 .AND. .NOT. ln_rstart ) THEN 213 210 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
r8191 r8193 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 restart52 51 #if defined key_netcdf4 53 52 !!---------------------------------------------------------------------- -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r8191 r8193 41 41 USE dianam ! build name of file 42 42 USE xios 43 USE iom_def, ONLY : max_rst_fields, rst_fields44 43 # endif 45 44 USE ioipsl, ONLY : ju2ymds ! for calendar 46 45 USE crs ! Grid coarsening 47 USE lib_fortran48 46 49 47 IMPLICIT NONE … … 64 62 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 65 63 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_active67 64 # endif 68 65 … … 139 136 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 140 137 END SELECT 141 142 138 #endif 143 139 ! horizontal grid definition … … 146 142 147 143 IF( TRIM(cdname) == TRIM(cxios_context) ) THEN 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)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 ) 152 148 CALL set_grid_znl( gphit ) 153 CALL set_grid("N",glamt, gphit, .FALSE.) ! not masked values154 149 ! 155 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(rxios_context)) THEN ! Add additional grid metadata150 IF( ln_cfmeta ) THEN ! Add additional grid metadata 156 151 CALL iom_set_domain_attr("grid_T", area = e12t(nldi:nlei, nldj:nlej)) 157 152 CALL iom_set_domain_attr("grid_U", area = e12u(nldi:nlei, nldj:nlej)) … … 168 163 CALL dom_grid_crs ! Save the parent grid information & Switch to coarse grid domain 169 164 ! 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)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 ) 174 169 CALL set_grid_znl( gphit_crs ) 175 170 ! 176 171 CALL dom_grid_glo ! Return to parent grid domain 177 172 ! 178 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(rxios_context)) THEN ! Add additional grid metadata173 IF( ln_cfmeta ) THEN ! Add additional grid metadata 179 174 CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 180 175 CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) … … 232 227 233 228 ! automatic definitions of some of the xml attributs 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 229 CALL set_xmlatt 242 230 243 231 CALL set_1point … … 256 244 END SUBROUTINE iom_init 257 245 258 259 SUBROUTINE set_rst_vars()260 !set names for variables in restart file261 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_vars357 358 359 SUBROUTINE set_rstr_active()360 !sets enabled = .TRUE. for each field in restart file361 #if defined key_xios2362 CHARACTER(len=256) :: rst_file363 TYPE(xios_field) :: field_hdl364 TYPE(xios_file) :: file_hdl365 TYPE(xios_filegroup) :: filegroup_hdl366 INTEGER :: i367 CHARACTER(lc) :: clpath368 369 clpath = TRIM(cn_ocerst_indir)370 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/'371 IF( TRIM(Agrif_CFixed()) == '0' ) THEN372 rst_file = TRIM(cn_ocerst_indir)//TRIM(cn_ocerst_in)373 ELSE374 rst_file = TRIM(cn_ocerst_indir)//'1_'//TRIM(cn_ocerst_in)375 ENDIF376 !set name of the restart file and enable available fields377 if(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS) to: ',rst_file378 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 context384 DO i = 1, max_rst_fields385 IF( TRIM(rst_fields(i)%vname) /= "NO_NAME") THEN386 IF( iom_varid( numror, TRIM(rst_fields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN387 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 ENDIF392 ENDIF393 END DO394 #endif395 END SUBROUTINE set_rstr_active396 246 397 247 SUBROUTINE iom_swap( cdname ) … … 837 687 ! value for the 2nd dimension (netcdf only) 838 688 ! 839 LOGICAL :: lxios ! local definition for XIOS read840 689 LOGICAL :: llnoov ! local definition to read overlap 841 690 LOGICAL :: luse_jattr ! local definition to read open_ocean_jstart file attribute … … 864 713 !--------------------------------------------------------------------- 865 714 ! 866 REAL(wp) :: gma, gmi 867 lxios = .FALSE. 868 if(PRESENT(lrxios)) lxios = lrxios 869 idvar = iom_varid( kiomid, cdvar ) 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 ? 870 718 idom = kdom 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 ) & 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 ) & 883 726 & CALL ctl_stop(trim(clinfo), 'kstart present needs kdom = jpdom_unknown or kdom = jpdom_autoglo_xy') 884 727 … … 1082 925 IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 1083 926 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 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 1144 951 !CDIR COLLAPSE 1145 952 IF( zscf /= 1.) pv_r2d(:,:) = pv_r2d(:,:) * zscf … … 1150 957 IF( zscf /= 1.) pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 1151 958 !CDIR COLLAPSE 1152 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 1153 ENDIF 959 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 960 ENDIF 961 ! 962 ENDIF 963 ! 964 ENDIF 965 ! 1154 966 END SUBROUTINE iom_get_123d 1155 967 … … 1555 1367 1556 1368 1557 SUBROUTINE set_grid( cdgrd, plon, plat , lmask)1369 SUBROUTINE set_grid( cdgrd, plon, plat ) 1558 1370 !!---------------------------------------------------------------------- 1559 1371 !! *** ROUTINE set_grid *** … … 1568 1380 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask 1569 1381 INTEGER :: ni,nj 1570 LOGICAL :: lmask1571 1382 1572 1383 ni=nlei-nldi+1 ; nj=nlej-nldj+1 … … 1581 1392 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 1582 1393 1583 IF ( l mask) THEN1394 IF ( ln_mskland ) THEN 1584 1395 ! mask land points, keep values on coast line -> specific mask for U, V and W points 1585 1396 SELECT CASE ( cdgrd ) … … 1625 1436 ! Offset of coordinate representing bottom-left corner 1626 1437 SELECT CASE ( TRIM(cdgrd) ) 1627 CASE ('T', 'W' , 'N')1438 CASE ('T', 'W') 1628 1439 icnr = -1 ; jcnr = -1 1629 1440 CASE ('U') -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/iom_def.F90
r8191 r8193 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 restart54 LOGICAL, PUBLIC :: lxios_read !: read single file restart using XIOS55 LOGICAL, PUBLIC :: lxios_sini = .FALSE. ! is restart in a single file56 LOGICAL, PUBLIC :: lxios_set = .FALSE.57 53 58 54 TYPE, PUBLIC :: file_descriptor … … 74 70 END TYPE file_descriptor 75 71 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 = 8578 ! CHARACTER(len=30),DIMENSION(max_rst_fields), PUBLIC :: rst_fields ! names of variables in restart file79 80 TYPE, PUBLIC :: RST_FIELD81 CHARACTER(len=30) :: vname ! names of variables in restart file82 CHARACTER(len=30) :: grid83 END TYPE RST_FIELD84 TYPE(RST_FIELD), PUBLIC :: rst_fields(max_rst_fields)85 86 72 !$AGRIF_END_DO_NOT_TREAT 87 73 -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r8191 r8193 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 XIOS221 ! can handle checking if variable is in the restart file (there will be no need to open222 ! restart)223 IF(.NOT.lxios_set) lxios_read = lxios_read.AND.lxios_sini224 IF( lxios_read) THEN225 if(.NOT.lxios_set) then226 rxios_context = 'nemo_rst'227 call iom_init( rxios_context )228 lxios_set = .TRUE.229 endif230 ENDIF231 IF( TRIM(Agrif_CFixed()) /= '0' .AND. lxios_read) THEN232 rxios_context = 'nemo_rst'233 call iom_init( rxios_context )234 ENDIF235 220 ENDIF 236 221 END SUBROUTINE rst_read_open -
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r8191 r8193 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?71 70 !! 72 71 NAMELIST/namsbc_apr/ cn_dir, sn_apr, ln_ref_apr, rn_pref, ln_apr_obc … … 144 143 IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN 145 144 IF(lwp) WRITE(numout,*) 'sbc_apr: ssh_ibb read in the restart file' 146 CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb , lrxios = lxios_read) ! before inv. barometer ssh145 CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb ) ! before inv. barometer ssh 147 146 ! 148 147 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
r8191 r8193 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 workspace85 84 !!---------------------------------------------------------------------- 86 85 ! … … 126 125 IF( ln_diaptr ) CALL dia_ptr( zvn ) ! diagnose the effective MSF 127 126 ! 128 <<<<<<< .working129 127 IF( l_trdtra ) THEN !* Save ta and sa trends 130 128 ALLOCATE(ztrdt( 1:jpi, 1:jpj, 1:jpk) ) … … 134 132 ENDIF 135 133 ! 136 =======137 IF( l_trdtra ) THEN !* Save ta and sa trends138 CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds )139 ztrdt(:,:,:) = tsa(:,:,:,jp_tem)140 ztrds(:,:,:) = tsa(:,:,:,jp_sal)141 ENDIF142 !143 >>>>>>> .merge-right.r7923144 134 SELECT CASE ( nadv ) !== compute advection trend and add it to general trend ==! 145 135 CASE ( 1 ) ; CALL tra_adv_cen2 ( kt, nit000, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) ! 2nd order centered … … 172 162 END SELECT 173 163 ! 174 <<<<<<< .working175 164 IF( l_trdtra ) THEN ! save the advective trends for further diagnostics 176 165 DO jk = 1, jpkm1 … … 183 172 DEALLOCATE (ztrds) 184 173 ENDIF 185 =======186 IF( l_trdtra ) THEN ! save the advective trends for further diagnostics187 DO jk = 1, jpkm1188 ztrdt(:,:,jk) = tsa(:,:,jk,jp_tem) - ztrdt(:,:,jk)189 ztrds(:,:,jk) = tsa(:,:,jk,jp_sal) - ztrds(:,:,jk)190 END DO191 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 ENDIF195 >>>>>>> .merge-right.r7923196 174 ! ! print mean trends (used for debugging) 197 175 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
r8191 r8193 86 86 REAL(wp) :: zfp_ui, zfp_vj, zfp_wk ! - - 87 87 REAL(wp) :: zfm_ui, zfm_vj, zfm_wk ! - - 88 <<<<<<< .working89 88 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zwi, zwz 90 89 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz, zptry 91 90 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z2d 92 =======93 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwz94 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz, zptry95 REAL(wp), POINTER, DIMENSION(:,:) :: z2d96 >>>>>>> .merge-right.r792397 91 !!---------------------------------------------------------------------- 98 92 ! … … 114 108 IF( cdtype == 'TRA' .AND. (iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") ) ) l_trans = .TRUE. 115 109 ! 116 <<<<<<< .working117 110 IF( l_trd .OR. l_trans ) THEN 118 111 ALLOCATE(ztrdx(1:jpi, 1:jpj, 1:jpk)) 119 112 ALLOCATE(ztrdy(1:jpi, 1:jpj, 1:jpk)) 120 113 ALLOCATE(ztrdz(1:jpi, 1:jpj, 1:jpk)) 121 =======122 IF( l_trd .OR. l_trans ) THEN123 CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz )124 >>>>>>> .merge-right.r7923125 114 ztrdx(:,:,:) = 0.e0 ; ztrdy(:,:,:) = 0.e0 ; ztrdz(:,:,:) = 0.e0 126 <<<<<<< .working127 115 ALLOCATE(z2d(1:jpi, 1:jpj)) 128 =======129 CALL wrk_alloc( jpi, jpj, z2d )130 >>>>>>> .merge-right.r7923131 116 ENDIF 132 117 ! 133 <<<<<<< .working134 118 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 135 119 ALLOCATE(zptry(1:jpi, 1:jpj, 1:jpk)) … … 137 121 ENDIF 138 122 ! 139 =======140 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN141 CALL wrk_alloc( jpi, jpj, jpk, zptry )142 zptry(:,:,:) = 0._wp143 ENDIF144 !145 >>>>>>> .merge-right.r7923146 123 zwi(:,:,:) = 0.e0 ; 147 124 ! … … 331 308 END DO 332 309 ! 333 <<<<<<< .working334 310 DEALLOCATE( zwi ) 335 311 DEALLOCATE( zwz ) … … 341 317 ENDIF 342 318 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 ) THEN346 CALL wrk_dealloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz )347 CALL wrk_dealloc( jpi, jpj, z2d )348 ENDIF349 IF( cdtype == 'TRA' .AND. ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, zptry )350 >>>>>>> .merge-right.r7923351 319 ! 352 320 IF( nn_timing == 1 ) CALL timing_stop('tra_adv_tvd') … … 392 360 REAL(wp) :: zfp_ui, zfp_vj, zfp_wk ! - - 393 361 REAL(wp) :: zfm_ui, zfm_vj, zfm_wk ! - - 394 <<<<<<< .working395 362 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zwx_sav , zwy_sav 396 363 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zwi, zwz, zhdiv, zwz_sav, zwzts … … 398 365 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zptry 399 366 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrs 400 =======401 REAL(wp), POINTER, DIMENSION(:,: ) :: zwx_sav , zwy_sav402 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi, zwz, zhdiv, zwz_sav, zwzts403 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdx, ztrdy, ztrdz404 REAL(wp), POINTER, DIMENSION(:,:,:) :: zptry405 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrs406 >>>>>>> .merge-right.r7923407 367 !!---------------------------------------------------------------------- 408 368 ! … … 434 394 ENDIF 435 395 ! 436 <<<<<<< .working437 396 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN 438 397 ALLOCATE(zptry(1:jpi, 1:jpj, 1:jpk)) … … 440 399 ENDIF 441 400 ! 442 =======443 IF( cdtype == 'TRA' .AND. ln_diaptr ) THEN444 CALL wrk_alloc( jpi, jpj,jpk, zptry )445 zptry(:,:,:) = 0._wp446 ENDIF447 !448 >>>>>>> .merge-right.r7923449 401 zwi(:,:,:) = 0._wp 450 402 z_rzts = 1._wp / REAL( jnzts, wp ) … … 681 633 682 634 IF( cdtype == 'TRA' .AND. ln_diaptr ) DEALLOCATE(zptry ) 683 IF( cdtype == 'TRA' .AND. ln_diaptr ) CALL wrk_dealloc( jpi, jpj, jpk, zptry )684 635 ! 685 636 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
r8191 r8193 106 106 INTEGER :: ji, jj, jk, jn ! dummy loop indices 107 107 INTEGER :: ikt 108 <<<<<<< .working109 108 REAL(wp) :: zmsku, zabe1, zcof1, zcoef3 ! local scalars 110 109 REAL(wp) :: zmskv, zabe2, zcof2, zcoef4 ! - - … … 114 113 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax, ztray, ztraz 115 114 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax_T, ztray_T, ztraz_T 116 =======117 REAL(wp) :: zmsku, zabe1, zcof1, zcoef3 ! local scalars118 REAL(wp) :: zmskv, zabe2, zcof2, zcoef4 ! - -119 REAL(wp) :: zcoef0, zbtr ! - -120 REAL(wp), POINTER, DIMENSION(:,: ) :: z2d121 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdkt, zdk1t, zdit, zdjt, ztfw122 >>>>>>> .merge-right.r7923123 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax, ztray, ztraz124 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), TARGET :: ztrax_T, ztray_T, ztraz_T125 115 !!---------------------------------------------------------------------- 126 116 ! 127 117 IF( nn_timing == 1 ) CALL timing_start('tra_ldf_iso') 128 118 ! 129 <<<<<<< .working130 119 ALLOCATE( z2d(1:jpi, 1:jpj)) 131 120 ALLOCATE( zdit(1:jpi, 1:jpj, 1:jpk)) … … 142 131 ALLOCATE( ztraz_T(1:jpi,1:jpj,1:jpk)) 143 132 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.r7923150 133 ! 151 134 … … 364 347 END DO 365 348 ! 366 <<<<<<< .working367 349 IF( l_trdtra .AND. cdtype == "TRA" ) THEN ! save the horizontal component of diffusive trends for further diagnostics 368 350 CALL trd_tra( kt, cdtype, jp_tem, jptra_iso_x, ztrax_T ) … … 373 355 CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_z1, ztraz ) ! 374 356 ENDIF 375 =======376 IF( l_trdtra .AND. cdtype == "TRA" ) THEN ! save the horizontal component of diffusive trends for further diagnostics377 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 component382 CALL trd_tra( kt, cdtype, jp_sal, jptra_iso_z1, ztraz ) !383 ENDIF384 !385 CALL wrk_dealloc( jpi, jpj, z2d )386 CALL wrk_dealloc( jpi, jpj, jpk, zdit, zdjt, ztfw, zdkt, zdk1t )387 >>>>>>> .merge-right.r7923388 DEALLOCATE( ztrax, ztray, ztraz )389 IF( l_trdtra .and. cdtype == 'TRA' ) DEALLOCATE( ztrax_T, ztray_T, ztraz_T )390 357 ! 391 358 DEALLOCATE( z2d )
Note: See TracChangeset
for help on using the changeset viewer.