Changeset 3839 for branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM
- Timestamp:
- 2013-03-14T19:00:38+01:00 (11 years ago)
- Location:
- branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM
- Files:
-
- 50 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/GYRE/EXP00/namelist
r2905 r3839 511 511 &nam_vvl ! vertical coordinate options 512 512 !----------------------------------------------------------------------- 513 &nam_vvl 514 ln_vvl_zstar = .false. ! zstar vertical coordinate 513 ln_vvl_zstar = .true. ! zstar vertical coordinate 515 514 ln_vvl_ztilde = .false. ! hybrid verticalcoordinate: only high frequency variations 516 515 ln_vvl_layer = .false. ! full layer vertical coordinate 517 ahe3 = 0.e0 ! thickness diffusion coefficient 516 rn_ahe3 = 0.e0 ! thickness diffusion coefficient 517 ln_vvl_dbg = .true. ! debug prints (T/F) 518 518 / 519 519 !----------------------------------------------------------------------- -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist
r2905 r3839 511 511 &nam_vvl ! vertical coordinate options 512 512 !----------------------------------------------------------------------- 513 &nam_vvl514 513 ln_vvl_zstar = .false. ! zstar vertical coordinate 515 ln_vvl_ztilde = . false.! hybrid verticalcoordinate: only high frequency variations514 ln_vvl_ztilde = .true. ! hybrid verticalcoordinate: only high frequency variations 516 515 ln_vvl_layer = .false. ! full layer vertical coordinate 517 ahe3 = 0.e0 ! thickness diffusion coefficient 516 rn_ahe3 = 0.e0 ! thickness diffusion coefficient 517 ln_vvl_dbg = .true. ! debug prints (T/F) 518 518 / 519 519 !----------------------------------------------------------------------- -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef.xml
r2905 r3839 49 49 <field id="cellthc" description="Cell thickness" unit="m" axis_ref="deptht" /> 50 50 <!-- variables available with key_vvl --> 51 <field id="e3t_n" description="vertical scale factor" unit="m" 52 <field id="e3tdef" description="vertical scale factor variance" unit="%^2" 53 <field id="dept_n" description="depth" unit="m" 51 <field id="e3t_n" description="vertical scale factor" unit="m" axis_ref="deptht" /> 52 <field id="e3tdef" description="vertical scale factor variance" unit="%^2" axis_ref="deptht" /> 53 <field id="dept_n" description="depth" unit="m" axis_ref="deptht" /> 54 54 </group> 55 55 … … 296 296 <field ref="hc300" name="sohtc300" /> 297 297 <field ref="ist_ipa" name="soicetem" /> 298 <field ref="icealb_cea" name="soicealb" /> 298 <field ref="icealb_cea" name="soicealb" /> 299 <field ref="e3t_n" name="voe3tvvl" /> 300 <field ref="e3tdef" name="voe3tdef" /> 301 <field ref="dept_n" name="vodepthn" /> 299 302 </file> 300 303 … … 613 616 <field id="botpres" description="Pressure at sea floor" unit="dbar" /> 614 617 <field id="cellthc" description="Cell thickness" unit="m" axis_ref="deptht" /> 618 <!-- variables available with key_vvl --> 619 <field id="e3t_n" description="vertical scale factor" unit="m" axis_ref="deptht" /> 620 <field id="e3tdef" description="vertical scale factor variance" unit="%^2" axis_ref="deptht" /> 621 <field id="dept_n" description="depth" unit="m" axis_ref="deptht" /> 615 622 </group> 616 623 … … 859 866 <field ref="hc300" name="sohtc300" /> 860 867 <field ref="ist_ipa" name="soicetem" /> 861 <field ref="icealb_cea" name="soicealb" /> 868 <field ref="icealb_cea" name="soicealb" /> 869 <field ref="e3t_n" name="voe3tvvl" /> 870 <field ref="e3tdef" name="voe3tdef" /> 871 <field ref="dept_n" name="vodepthn" /> 862 872 </file> 863 873 -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist
r2905 r3839 58 58 &namzgr ! vertical coordinate 59 59 !----------------------------------------------------------------------- 60 ln_zco = . false.! z-coordinate - full steps (T/F) ("key_zco" may also be defined)61 ln_zps = . true.! z-coordinate - partial steps (T/F)60 ln_zco = .true. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) 61 ln_zps = .false. ! z-coordinate - partial steps (T/F) 62 62 ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) 63 63 / … … 252 252 ln_qsr_2bd = .false. ! 2 bands light penetration 253 253 ln_qsr_bio = .false. ! bio-model light penetration 254 nn_chldta = 1! RGB : Chl data (=1) or cst value (=0)254 nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) 255 255 rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) 256 256 rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction … … 511 511 &nam_vvl ! vertical coordinate options 512 512 !----------------------------------------------------------------------- 513 &nam_vvl 514 ln_vvl_zstar = .true. ! zstar vertical coordinate 515 ln_vvl_ztilde = .false. ! hybrid verticalcoordinate: only high frequency variations 513 ln_vvl_zstar = .false. ! zstar vertical coordinate 514 ln_vvl_ztilde = .true. ! hybrid verticalcoordinate: only high frequency variations 516 515 ln_vvl_layer = .false. ! full layer vertical coordinate 517 ahe3 = 0.e0 ! thickness diffusion coefficient 516 rn_ahe3 = 0.e0 ! thickness diffusion coefficient 517 ln_vvl_dbg = .true. ! debug prints (T/F) 518 518 / 519 519 !----------------------------------------------------------------------- 520 520 &namdyn_adv ! formulation of the momentum advection 521 521 !----------------------------------------------------------------------- 522 ln_dynadv_vec = . true.! vector form (T) or flux form (F)523 ln_dynadv_cen2= . false.! flux form - 2nd order centered scheme522 ln_dynadv_vec = .false. ! vector form (T) or flux form (F) 523 ln_dynadv_cen2= .true. ! flux form - 2nd order centered scheme 524 524 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 525 525 / … … 536 536 !----------------------------------------------------------------------- 537 537 ln_hpg_zco = .false. ! z-coordinate - full steps 538 ln_hpg_zps = . true.! z-coordinate - partial steps (interpolation)539 ln_hpg_sco = . false.! s-coordinate (standard jacobian formulation)538 ln_hpg_zps = .false. ! z-coordinate - partial steps (interpolation) 539 ln_hpg_sco = .true. ! s-coordinate (standard jacobian formulation) 540 540 ln_hpg_hel = .false. ! s-coordinate (helsinki modification) 541 541 ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) … … 781 781 &namhsb ! Heat and salt budgets 782 782 !----------------------------------------------------------------------- 783 ln_diahsb = . false. ! check the heat and salt budgets (T) or not (F)783 ln_diahsb = .true. ! check the heat and salt budgets (T) or not (F) 784 784 / 785 785 -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/IGCM00/COMP/opa9.card
r2572 r3839 84 84 (mesh_mask.nc , ${R_OUT_OCE_O}/${config_UserChoices_JobName}_mesh_mask.nc, NONE),\ 85 85 (output.abort.nc , ${R_OUT_OCE_D}/${PREFIX}_output.abort.nc, NONE),\ 86 (output.init.nc , ${R_OUT_OCE_O_I}/${config_UserChoices_JobName}_${PeriodDateBegin}_output.init.nc, NONE) 86 (output.init.nc , ${R_OUT_OCE_O_I}/${config_UserChoices_JobName}_${PeriodDateBegin}_output.init.nc, NONE),\ 87 (heat_salt_volume_budgets.txt, ${R_OUT_OCE_D}/${config_UserChoices_JobName}_${PeriodDateBegin}_heat_salt_volume_budgets, NONE) 87 88 88 89 -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist
r2905 r3839 512 512 &nam_vvl ! vertical coordinate options 513 513 !----------------------------------------------------------------------- 514 &nam_vvl 515 ln_vvl_zstar = .false. ! zstar vertical coordinate 514 ln_vvl_zstar = .true. ! zstar vertical coordinate 516 515 ln_vvl_ztilde = .false. ! hybrid verticalcoordinate: only high frequency variations 517 516 ln_vvl_layer = .false. ! full layer vertical coordinate 518 ahe3 = 0.e0 ! thickness diffusion coefficient 517 rn_ahe3 = 0.e0 ! thickness diffusion coefficient 518 ln_vvl_dbg = .true. ! debug prints (T/F) 519 519 / 520 520 !----------------------------------------------------------------------- -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/POMME/EXP00/namelist
r2905 r3839 512 512 !----------------------------------------------------------------------- 513 513 &nam_vvl 514 ln_vvl_zstar = . false.! zstar vertical coordinate514 ln_vvl_zstar = .true. ! zstar vertical coordinate 515 515 ln_vvl_ztilde = .false. ! hybrid verticalcoordinate: only high frequency variations 516 516 ln_vvl_layer = .false. ! full layer vertical coordinate 517 ahe3 = 0.e0 ! thickness diffusion coefficient 517 rn_ahe3 = 0.e0 ! thickness diffusion coefficient 518 ln_vvl_dbg = .true. ! debug prints (T/F) 518 519 / 519 520 !----------------------------------------------------------------------- -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OFF_SRC/domain.F90
r2574 r3839 247 247 !! vertical scale factors. 248 248 !! 249 !! ** Method : - reference 1D vertical coordinate (gdep._ 0, e3._0)249 !! ** Method : - reference 1D vertical coordinate (gdep._1d, e3._1d) 250 250 !! - read/set ocean depth and ocean levels (bathy, mbathy) 251 251 !! - vertical coordinate (gdep., e3.) depending on the -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OFF_SRC/domrea.F90
r2715 r3839 174 174 CALL iom_get( inum4, jpdom_data, 'e3w', e3w ) 175 175 176 CALL iom_get( inum4, jpdom_unknown, 'gdept_ 0', gdept_0) ! depth177 CALL iom_get( inum4, jpdom_unknown, 'gdepw_ 0', gdepw_0)176 CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d ) ! depth 177 CALL iom_get( inum4, jpdom_unknown, 'gdepw_1d', gdepw_1d ) 178 178 ENDIF 179 179 180 180 181 181 IF( ln_zps ) THEN ! z-coordinate - partial steps 182 CALL iom_get( inum4, jpdom_unknown, 'gdept_ 0', gdept_0) ! reference depth183 CALL iom_get( inum4, jpdom_unknown, 'gdepw_ 0', gdepw_0)184 CALL iom_get( inum4, jpdom_unknown, 'e3t_ 0' , e3t_0) ! reference scale factors185 CALL iom_get( inum4, jpdom_unknown, 'e3w_ 0' , e3w_0)182 CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d ) ! reference depth 183 CALL iom_get( inum4, jpdom_unknown, 'gdepw_1d', gdepw_1d ) 184 CALL iom_get( inum4, jpdom_unknown, 'e3t_1d' , e3t_1d ) ! reference scale factors 185 CALL iom_get( inum4, jpdom_unknown, 'e3w_1d' , e3w_1d ) 186 186 ! 187 187 IF( nmsh <= 6 ) THEN ! 3D vertical scale factors … … 195 195 ! ! deduces the 3D scale factors 196 196 DO jk = 1, jpk 197 e3t(:,:,jk) = e3t_ 0(jk)! set to the ref. factors198 e3u(:,:,jk) = e3t_ 0(jk)199 e3v(:,:,jk) = e3t_ 0(jk)200 e3w(:,:,jk) = e3w_ 0(jk)197 e3t(:,:,jk) = e3t_1d(jk) ! set to the ref. factors 198 e3u(:,:,jk) = e3t_1d(jk) 199 e3v(:,:,jk) = e3t_1d(jk) 200 e3w(:,:,jk) = e3w_1d(jk) 201 201 END DO 202 202 DO jj = 1,jpj ! adjust the deepest values 203 203 DO ji = 1,jpi 204 204 ik = mbkt(ji,jj) 205 e3t(ji,jj,ik) = e3tp(ji,jj) * tmask(ji,jj,1) + e3t_ 0(1) * ( 1._wp - tmask(ji,jj,1) )206 e3w(ji,jj,ik) = e3wp(ji,jj) * tmask(ji,jj,1) + e3w_ 0(1) * ( 1._wp - tmask(ji,jj,1) )205 e3t(ji,jj,ik) = e3tp(ji,jj) * tmask(ji,jj,1) + e3t_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 206 e3w(ji,jj,ik) = e3wp(ji,jj) * tmask(ji,jj,1) + e3w_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 207 207 END DO 208 208 END DO … … 219 219 ! 220 220 DO jk = 1, jpk ! set to z-scale factor if zero (i.e. along closed boundaries) 221 WHERE( e3u(:,:,jk) == 0._wp ) e3u(:,:,jk) = e3t_ 0(jk)222 WHERE( e3v(:,:,jk) == 0._wp ) e3v(:,:,jk) = e3t_ 0(jk)221 WHERE( e3u(:,:,jk) == 0._wp ) e3u(:,:,jk) = e3t_1d(jk) 222 WHERE( e3v(:,:,jk) == 0._wp ) e3v(:,:,jk) = e3t_1d(jk) 223 223 END DO 224 224 END IF … … 232 232 ! 233 233 DO jk = 1, jpk ! deduces the 3D depth 234 gdept(:,:,jk) = gdept_ 0(jk)235 gdepw(:,:,jk) = gdepw_ 0(jk)234 gdept(:,:,jk) = gdept_1d(jk) 235 gdepw(:,:,jk) = gdepw_1d(jk) 236 236 END DO 237 237 DO jj = 1, jpj … … 250 250 251 251 IF( ln_zco ) THEN ! Vertical coordinates and scales factors 252 CALL iom_get( inum4, jpdom_unknown, 'gdept_ 0', gdept_0) ! depth253 CALL iom_get( inum4, jpdom_unknown, 'gdepw_ 0', gdepw_0)254 CALL iom_get( inum4, jpdom_unknown, 'e3t_ 0' , e3t_0)255 CALL iom_get( inum4, jpdom_unknown, 'e3w_ 0' , e3w_0)252 CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d ) ! depth 253 CALL iom_get( inum4, jpdom_unknown, 'gdepw_1d', gdepw_1d ) 254 CALL iom_get( inum4, jpdom_unknown, 'e3t_1d' , e3t_1d ) 255 CALL iom_get( inum4, jpdom_unknown, 'e3w_1d' , e3w_1d ) 256 256 ENDIF 257 257 258 258 !!gm BUG in s-coordinate this does not work! 259 259 ! deepest/shallowest W level Above/Below ~10m 260 zrefdep = 10._wp - ( 0.1_wp * MINVAL(e3w_ 0) ) ! ref. depth with tolerance (10% of minimum layer thickness)261 nlb10 = MINLOC( gdepw_ 0, mask = gdepw_0> zrefdep, dim = 1 ) ! shallowest W level Below ~10m260 zrefdep = 10._wp - ( 0.1_wp * MINVAL(e3w_1d) ) ! ref. depth with tolerance (10% of minimum layer thickness) 261 nlb10 = MINLOC( gdepw_1d, mask = gdepw_1d > zrefdep, dim = 1 ) ! shallowest W level Below ~10m 262 262 nla10 = nlb10 - 1 ! deepest W level Above ~10m 263 263 !!gm end bug … … 300 300 WRITE(numout,*) ' Reference z-coordinate depth and scale factors:' 301 301 WRITE(numout, "(9x,' level gdept gdepw e3t e3w ')" ) 302 WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_ 0(jk), gdepw_0(jk), e3t_0(jk), e3w_0(jk), jk = 1, jpk )302 WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_1d(jk), gdepw_1d(jk), e3t_1d(jk), e3w_1d(jk), jk = 1, jpk ) 303 303 ENDIF 304 304 305 305 DO jk = 1, jpk 306 IF( e3w_ 0 (jk) <= 0._wp .OR. e3t_0 (jk) <= 0._wp ) CALL ctl_stop( ' e3w_0 or e3t_0=< 0 ' )307 IF( gdepw_ 0(jk) < 0._wp .OR. gdept_0(jk) < 0._wp ) CALL ctl_stop( ' gdepw_0 or gdept_0< 0 ' )306 IF( e3w_1d (jk) <= 0._wp .OR. e3t_1d (jk) <= 0._wp ) CALL ctl_stop( ' e3w_1d or e3t_1d =< 0 ' ) 307 IF( gdepw_1d(jk) < 0._wp .OR. gdept_1d(jk) < 0._wp ) CALL ctl_stop( ' gdepw_1d or gdept_1d < 0 ' ) 308 308 END DO 309 309 ! ! ============================ -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90
r2715 r3839 198 198 thick0(:,:) = 0._wp 199 199 DO jk = 1, jpkm1 200 vol0 = vol0 + SUM( area (:,:) * tmask(:,:,jk) * fse3t_0(:,:,jk) )201 thick0(:,:) = thick0(:,:) + tmask_i(:,:) * tmask(:,:,jk) * fse3t_0(:,:,jk)200 vol0 = vol0 + SUM( area (:,:) * tmask(:,:,jk) * e3t_0(:,:,jk) ) 201 thick0(:,:) = thick0(:,:) + tmask_i(:,:) * tmask(:,:,jk) * e3t_0(:,:,jk) 202 202 END DO 203 203 IF( lk_mpp ) CALL mpp_sum( vol0 ) … … 214 214 ik = mbkt(ji,jj) 215 215 IF( ik > 1 ) THEN 216 zztmp = ( gdept_ 0(ik) - fsdept_0(ji,jj,ik) ) / ( gdept_0(ik) - gdept_0(ik-1) )216 zztmp = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 217 217 sn0(ji,jj,ik) = ( 1._wp - zztmp ) * sn0(ji,jj,ik) + zztmp * sn0(ji,jj,ik-1) 218 218 ENDIF -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diadimg.F90
r2715 r3839 103 103 104 104 CASE ( 'T') 105 z4dep(:)=gdept_ 0(:)105 z4dep(:)=gdept_1d(:) 106 106 107 107 CASE ( 'W' ) 108 z4dep(:)=gdepw_ 0(:)108 z4dep(:)=gdepw_1d(:) 109 109 110 110 CASE ( '2' ) -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
r2528 r3839 78 78 z1_rau0 = 1.e0 / rau0 79 79 z_frc_trd_v = z1_rau0 * SUM( - ( emp(:,:) - rnf(:,:) ) * surf(:,:) ) ! volume fluxes 80 z_frc_trd_t = SUM( sbc_tsc(:,:,jp_tem)* surf(:,:) ) ! heat fluxes81 z_frc_trd_s = SUM( sbc_tsc(:,:,jp_sal)* surf(:,:) ) ! salt fluxes80 z_frc_trd_t = SUM( sbc_tsc(:,:,jp_tem) * surf(:,:) ) ! heat fluxes 81 z_frc_trd_s = SUM( sbc_tsc(:,:,jp_sal) * surf(:,:) ) ! salt fluxes 82 82 ! Add penetrative solar radiation 83 83 IF( ln_traqsr ) z_frc_trd_t = z_frc_trd_t + ro0cpr * SUM( qsr (:,:) * surf(:,:) ) … … 102 102 DO jk = 1, jpkm1 103 103 ! volume variation (calculated with scale factors) 104 zdiff_v2 = zdiff_v2 + SUM( surf(:,:) * tmask(:,:,jk) & 105 & * ( fse3t_n(:,:,jk) & 106 & - e3t_ini(:,:,jk) ) ) 104 zdiff_v2 = zdiff_v2 + SUM( surf(:,:) * tmask(:,:,jk) * ( fse3t_n(:,:,jk) - e3t_ini(:,:,jk) ) ) 107 105 ! heat content variation 108 zdiff_hc = zdiff_hc + SUM( surf(:,:) * tmask(:,:,jk) & 109 & * ( fse3t_n(:,:,jk) * tn(:,:,jk) & 110 & - hc_loc_ini(:,:,jk) ) ) 106 zdiff_hc = zdiff_hc + SUM( surf(:,:) * tmask(:,:,jk) * ( fse3t_n(:,:,jk) * tn(:,:,jk) - hc_loc_ini(:,:,jk) ) ) 111 107 ! salt content variation 112 zdiff_sc = zdiff_sc + SUM( surf(:,:) * tmask(:,:,jk) & 113 & * ( fse3t_n(:,:,jk) * sn(:,:,jk) & 114 & - sc_loc_ini(:,:,jk) ) ) 108 zdiff_sc = zdiff_sc + SUM( surf(:,:) * tmask(:,:,jk) * ( fse3t_n(:,:,jk) * sn(:,:,jk) - sc_loc_ini(:,:,jk) ) ) 115 109 ENDDO 116 110 -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diahth.F90
r2715 r3839 300 300 ! ----------------------------- ! 301 301 302 ! find ilevel with (ilevel+1) the deepest W-level above 300m (we assume we can use e3t_ 0to do this search...)302 ! find ilevel with (ilevel+1) the deepest W-level above 300m (we assume we can use e3t_1d to do this search...) 303 303 ilevel = 0 304 304 zthick_0 = 0._wp 305 305 DO jk = 1, jpkm1 306 zthick_0 = zthick_0 + e3t_ 0(jk)306 zthick_0 = zthick_0 + e3t_1d(jk) 307 307 IF( zthick_0 < 300. ) ilevel = jk 308 308 END DO -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90
r2715 r3839 650 650 CALL histbeg(clhstnam, 1, zfoo, jpj, zphi, & 651 651 1, 1, 1, jpj, niter, zjulian, zdt*nn_fptr, nhoridz, numptr, domain_id=nidom_ptr) 652 ! Vertical grids : gdept_ 0, gdepw_0652 ! Vertical grids : gdept_1d, gdepw_1d 653 653 CALL histvert( numptr, "deptht", "Vertical T levels", & 654 & "m", jpk, gdept_ 0, ndepidzt, "down" )654 & "m", jpk, gdept_1d, ndepidzt, "down" ) 655 655 CALL histvert( numptr, "depthw", "Vertical W levels", & 656 & "m", jpk, gdepw_ 0, ndepidzw, "down" )656 & "m", jpk, gdepw_1d, ndepidzw, "down" ) 657 657 ! 658 658 CALL wheneq ( jpj*jpk, MIN(sjk(:,:,1), 1._wp), 1, 1., ndex , ndim ) ! Lat-Depth -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r2970 r3839 329 329 & nit000-1, zjulian, zdt, nh_T, nid_T, domain_id=nidom, snc4chunks=snc4set ) 330 330 CALL histvert( nid_T, "deptht", "Vertical T levels", & ! Vertical grid: gdept 331 & "m", ipk, gdept_ 0, nz_T, "down" )331 & "m", ipk, gdept_1d, nz_T, "down" ) 332 332 ! ! Index of ocean points 333 333 CALL wheneq( jpi*jpj*ipk, tmask, 1, 1., ndex_T , ndim_T ) ! volume … … 342 342 & nit000-1, zjulian, zdt, nh_U, nid_U, domain_id=nidom, snc4chunks=snc4set ) 343 343 CALL histvert( nid_U, "depthu", "Vertical U levels", & ! Vertical grid: gdept 344 & "m", ipk, gdept_ 0, nz_U, "down" )344 & "m", ipk, gdept_1d, nz_U, "down" ) 345 345 ! ! Index of ocean points 346 346 CALL wheneq( jpi*jpj*ipk, umask, 1, 1., ndex_U , ndim_U ) ! volume … … 355 355 & nit000-1, zjulian, zdt, nh_V, nid_V, domain_id=nidom, snc4chunks=snc4set ) 356 356 CALL histvert( nid_V, "depthv", "Vertical V levels", & ! Vertical grid : gdept 357 & "m", ipk, gdept_ 0, nz_V, "down" )357 & "m", ipk, gdept_1d, nz_V, "down" ) 358 358 ! ! Index of ocean points 359 359 CALL wheneq( jpi*jpj*ipk, vmask, 1, 1., ndex_V , ndim_V ) ! volume … … 368 368 & nit000-1, zjulian, zdt, nh_W, nid_W, domain_id=nidom, snc4chunks=snc4set ) 369 369 CALL histvert( nid_W, "depthw", "Vertical W levels", & ! Vertical grid: gdepw 370 & "m", ipk, gdepw_ 0, nz_W, "down" )370 & "m", ipk, gdepw_1d, nz_W, "down" ) 371 371 372 372 … … 554 554 ENDIF 555 555 IF( lk_vvl ) THEN 556 z3d(:,:,:) = ( ( fse3t_n(:,:,:) - fse3t_0(:,:,:) ) / fse3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2556 z3d(:,:,:) = ( ( fse3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 557 557 CALL histwrite( nid_T, "vovvle3t", it, fse3t_n (:,:,:) , ndim_T , ndex_T ) ! level thickness 558 558 CALL histwrite( nid_T, "vovvldep", it, fsdept_n(:,:,:) , ndim_T , ndex_T ) ! t-point depth … … 715 715 1, jpi, 1, jpj, nit000-1, zjulian, zdt, nh_i, id_i, domain_id=nidom, snc4chunks=snc4set ) ! Horizontal grid : glamt and gphit 716 716 CALL histvert( id_i, "deptht", "Vertical T levels", & ! Vertical grid : gdept 717 "m", jpk, gdept_ 0, nz_i, "down")717 "m", jpk, gdept_1d, nz_i, "down") 718 718 719 719 ! Declare all the output fields as NetCDF variables -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
r2974 r3839 128 128 !! All coordinates 129 129 !! --------------- 130 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gdep3w !: depth of T-points (sum of e3w) (m)131 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gdept , gdepw!: analytical depth at T-W points (m)132 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3v , e3f!: analytical vertical scale factors at V--F133 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3t , e3u!: T--U points (m)134 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3vw !: analytical vertical scale factors at VW--135 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3w , e3uw!: W--UW points (m)130 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gdep3w_0 !: depth of T-points (sum of e3w) (m) 131 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gdept_0, gdepw_0 !: analytical depth at T-W points (m) 132 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3v_0 , e3f_0 !: analytical vertical scale factors at V--F 133 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3t_0 , e3u_0 !: T--U points (m) 134 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3vw_0 !: analytical vertical scale factors at VW-- 135 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3w_0 , e3uw_0 !: W--UW points (m) 136 136 #if defined key_vvl 137 137 LOGICAL, PUBLIC, PARAMETER :: lk_vvl = .TRUE. !: variable grid flag … … 168 168 !! z-coordinate with full steps (also used in the other cases as reference z-coordinate) 169 169 !! =-----------------====------ 170 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: gdept_ 0, gdepw_0!: reference depth of t- and w-points (m)171 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: e3t_ 0 , e3w_0!: reference vertical scale factors at T- and W-pts (m)172 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e3tp , e3wp!: ocean bottom level thickness at T and W points170 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: gdept_1d, gdepw_1d !: reference depth of t- and w-points (m) 171 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: e3t_1d , e3w_1d !: reference vertical scale factors at T- and W-pts (m) 172 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e3tp , e3wp !: ocean bottom level thickness at T and W points 173 173 174 174 !! s-coordinate and hybrid z-s-coordinate … … 281 281 & glamf(jpi,jpj) , gphif(jpi,jpj) , e1f(jpi,jpj) , e2f(jpi,jpj) , ff (jpi,jpj) , STAT=ierr(3) ) 282 282 ! 283 ALLOCATE( gdep3w (jpi,jpj,jpk) , e3v(jpi,jpj,jpk) , e3f(jpi,jpj,jpk) , &284 & gdept (jpi,jpj,jpk) , e3t(jpi,jpj,jpk) , e3u(jpi,jpj,jpk) , &285 & gdepw (jpi,jpj,jpk) , e3w(jpi,jpj,jpk) , e3vw(jpi,jpj,jpk) , e3uw(jpi,jpj,jpk) , STAT=ierr(4) )283 ALLOCATE( gdep3w_0(jpi,jpj,jpk) , e3v_0(jpi,jpj,jpk) , e3f_0 (jpi,jpj,jpk) , & 284 & gdept_0 (jpi,jpj,jpk) , e3t_0(jpi,jpj,jpk) , e3u_0 (jpi,jpj,jpk) , & 285 & gdepw_0 (jpi,jpj,jpk) , e3w_0(jpi,jpj,jpk) , e3vw_0(jpi,jpj,jpk) , e3uw_0(jpi,jpj,jpk) , STAT=ierr(4) ) 286 286 ! 287 287 #if defined key_vvl … … 300 300 & e12f (jpi,jpj) , e12f_1(jpi,jpj) , STAT=ierr(6) ) 301 301 ! 302 ALLOCATE( gdept_ 0(jpk) , gdepw_0(jpk) , &303 & e3t_ 0 (jpk) , e3w_0(jpk) , e3tp (jpi,jpj), e3wp(jpi,jpj) , &304 & gsigt (jpk) , gsigw(jpk) , gsi3w(jpk) , &305 & esigt (jpk) , esigw(jpk) , STAT=ierr(7) )302 ALLOCATE( gdept_1d(jpk) , gdepw_1d(jpk) , & 303 & e3t_1d (jpk) , e3w_1d (jpk) , e3tp (jpi,jpj), e3wp(jpi,jpj) , & 304 & gsigt (jpk) , gsigw (jpk) , gsi3w(jpk) , & 305 & esigt (jpk) , esigw (jpk) , STAT=ierr(7) ) 306 306 ! 307 307 ALLOCATE( hbatv (jpi,jpj) , hbatf (jpi,jpj) , & -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domstp.F90
r2715 r3839 90 90 91 91 DO jk = 1, jpk 92 IF( gdept_ 0(jk) <= rdth ) rdttra(jk) = rdtmin93 IF( gdept_ 0(jk) > rdth ) THEN92 IF( gdept_1d(jk) <= rdth ) rdttra(jk) = rdtmin 93 IF( gdept_1d(jk) > rdth ) THEN 94 94 rdttra(jk) = rdtmin + ( rdtmax - rdtmin ) & 95 * ( EXP( ( gdept_ 0(jk ) - rdth ) / rdth ) - 1. ) &96 / ( EXP( ( gdept_ 0(jpk) - rdth ) / rdth ) - 1. )95 * ( EXP( ( gdept_1d(jk ) - rdth ) / rdth ) - 1. ) & 96 / ( EXP( ( gdept_1d(jpk) - rdth ) / rdth ) - 1. ) 97 97 ENDIF 98 98 IF(lwp) WRITE(numout,"(36x,f5.2,5x,i3)") rdttra(jk)/3600., jk -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r2999 r3839 13 13 !!---------------------------------------------------------------------- 14 14 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness 15 !! dom_vvl_ nxt: Compute next vertical scale factors16 !! dom_vvl_s wp: Swap vertical scale factors and update the vertical grid15 !! dom_vvl_sf_nxt : Compute next vertical scale factors 16 !! dom_vvl_sf_swp : Swap vertical scale factors and update the vertical grid 17 17 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another 18 18 !! dom_vvl_rst : read/write restart file … … 44 44 LOGICAL , PUBLIC :: ln_vvl_kepe = .FALSE. ! kinetic/potential energy transfer 45 45 ! ! conservation: not used yet 46 REAL(wp) :: ahe3 = 0.e0 ! thickness diffusion coefficient 46 REAL(wp) :: rn_ahe3 = 0.e0 ! thickness diffusion coefficient 47 LOGICAL , PUBLIC :: ln_vvl_dbg = .FALSE. ! debug control prints 47 48 48 49 !! * Module variables … … 69 70 !! *** FUNCTION dom_vvl_alloc *** 70 71 !!---------------------------------------------------------------------- 72 IF( ln_vvl_zstar ) dom_vvl_alloc = 0 71 73 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 72 ALLOCATE( e3t_t_ n(jpi,jpj,jpk) , e3t_t_a(jpi,jpj,jpk) , e3t_t_b(jpi,jpj,jpk) , &74 ALLOCATE( e3t_t_b(jpi,jpj,jpk) , e3t_t_n(jpi,jpj,jpk) , e3t_t_a(jpi,jpj,jpk) , & 73 75 & un_td (jpi,jpj,jpk) , vn_td (jpi,jpj,jpk) , STAT = dom_vvl_alloc ) 74 76 IF( lk_mpp ) CALL mpp_sum ( dom_vvl_alloc ) … … 114 116 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 115 117 116 #if defined key_zco117 CALL ctl_stop( 'dom_vvl_init : options key_zco/key_dynspg_rl are incompatible with variable volume option key_vvl')118 #endif119 120 118 ! choose vertical coordinate (z_star, z_tilde or layer) 121 119 ! ========================== … … 126 124 IF( dom_vvl_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dom_vvl_init : unable to allocate arrays' ) 127 125 128 ! read or initialize e3t_t_(b/n) and fse3t_(b/n)129 ! ============================================== 126 ! Read or initialize fse3t_(b/n), e3t_t_(b/n) and hdiv_lf (and e3t_a(jpk)) 127 ! ======================================================================== 130 128 CALL dom_vvl_rst( nit000, 'READ' ) 129 fse3t_a(:,:,jpk) = e3t_0(:,:,jpk) 131 130 132 131 ! Reconstruction of all vertical scale factors at now and before time steps … … 162 161 hv_0(:,:) = 0.e0 163 162 DO jk = 1, jpk 164 ht_0(:,:) = ht_0(:,:) + fse3t_0(:,:,jk) * tmask(:,:,jk)165 hu_0(:,:) = hu_0(:,:) + fse3u_0(:,:,jk) * umask(:,:,jk)166 hv_0(:,:) = hv_0(:,:) + fse3v_0(:,:,jk) * vmask(:,:,jk)163 ht_0(:,:) = ht_0(:,:) + e3t_0(:,:,jk) * tmask(:,:,jk) 164 hu_0(:,:) = hu_0(:,:) + e3u_0(:,:,jk) * umask(:,:,jk) 165 hv_0(:,:) = hv_0(:,:) + e3v_0(:,:,jk) * vmask(:,:,jk) 167 166 END DO 168 167 … … 188 187 !! tranxt and dynspg routines 189 188 !! 190 !! ** Method : - z_tilde_case: after scale factor increment computed with 191 !! high frequency part of horizontal divergence + retsoring to 192 !! towards the background grid + thickness difusion. 189 !! ** Method : - z_star case: Repartition of ssh INCREMENT proportionnaly to the level thickness. 190 !! - z_tilde_case: after scale factor increment = 191 !! high frequency part of horizontal divergence 192 !! + retsoring towards the background grid 193 !! + thickness difusion 193 194 !! Then repartition of ssh INCREMENT proportionnaly 194 195 !! to the "baroclinic" level thickness. 195 !! - z_star case: Repartition of ssh proportionnaly to the level thickness.196 196 !! 197 197 !! ** Action : - hdiv_lf: restoring towards full baroclinic divergence in z_tilde case … … 200 200 !! - fse3(t/u/v)_a 201 201 !! 202 !! Reference : Leclair, M., and G. Madec,2011, Ocean Modelling.202 !! Reference : Leclair, M., and Madec, G. 2011, Ocean Modelling. 203 203 !!---------------------------------------------------------------------- 204 204 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released … … 217 217 REAL(wp) :: z_def_max ! temporary scalar 218 218 REAL(wp) :: z_tmin, z_tmax ! temporary scalars 219 LOGICAL :: ln_debug = .FALSE. ! local logical for debug prints220 219 !!---------------------------------------------------------------------- 221 220 IF( wrk_in_use(2, 1, 2, 3, 4, 5) ) THEN … … 233 232 ! ******************************* ! 234 233 235 ! ! ----------------- ! 236 IF( ln_vvl_zstar ) THEN ! z_star coordinate ! 237 ! ! ----------------- ! 234 ! ! ----------------- ! 235 IF( ln_vvl_zstar ) THEN ! z_star coordinate ! 236 ! ! ----------------- ! 237 238 238 z_scale(:,:) = ( ssha(:,:) - sshb(:,:) ) * tmask(:,:,1) / ( ht_0(:,:) + sshn(:,:) + 1. - tmask(:,:,1) ) 239 239 DO jk = 1, jpkm1 240 fse3t_a(:,:,jk) = fse3t_b(:,:,jk) + fse3t_n(:,:,jk) * z_scale(:,:) 241 END DO 242 243 ! ! --------------------------- !244 ELSE 245 ! ! --------------------------- !246 247 ! I - Low frequency horizontal divergence248 ! ================== =====================240 fse3t_a(:,:,jk) = fse3t_b(:,:,jk) + fse3t_n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk) 241 END DO 242 243 ! ! --------------------------- ! 244 ELSEIF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde or layer coordinate ! 245 ! ! --------------------------- ! 246 247 ! I - initialization 248 ! ================== 249 249 250 250 ! 1 - barotropic divergence … … 253 253 zht(:,:) = 0. 254 254 DO jk = 1, jpkm1 255 zhdiv(:,:) = zhdiv(:,:) + hdivn(:,:,jk) * fse3t_n(:,:,jk)255 zhdiv(:,:) = zhdiv(:,:) + fse3t_n(:,:,jk) * hdivn(:,:,jk) 256 256 zht (:,:) = zht (:,:) + fse3t_n(:,:,jk) * tmask(:,:,jk) 257 257 END DO 258 258 zhdiv(:,:) = zhdiv(:,:) / ( zht(:,:) + 1. - tmask(:,:,1) ) 259 259 260 ! 2 - restoring equation(z-tilde case only)261 ! ---------------------- 260 ! 2 - Low frequency baroclinic horizontal divergence (z-tilde case only) 261 ! -------------------------------------------------- 262 262 IF( ln_vvl_ztilde ) THEN 263 263 IF( kt .GT. nit000 ) THEN … … 278 278 DO jk = 1, jpkm1 279 279 e3t_t_a(:,:,jk) = e3t_t_a(:,:,jk) - ( fse3t_n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) - hdiv_lf(:,:,jk) ) 280 END DO ! layer case281 ELSE 280 END DO 281 ELSE ! layer case 282 282 DO jk = 1, jpkm1 283 283 e3t_t_a(:,:,jk) = e3t_t_a(:,:,jk) - fse3t_n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) … … 301 301 DO jj = 1, jpjm1 302 302 DO ji = 1, fs_jpim1 ! vector opt. 303 un_td(ji,jj,jk) = ahe3 * umask(ji,jj,jk) * e2_1u(ji,jj) * ( e3t_t_b(ji,jj,jk) - e3t_t_b(ji+1,jj ,jk) )304 vn_td(ji,jj,jk) = ahe3 * vmask(ji,jj,jk) * e1_2v(ji,jj) * ( e3t_t_b(ji,jj,jk) - e3t_t_b(ji ,jj+1,jk) )303 un_td(ji,jj,jk) = rn_ahe3 * umask(ji,jj,jk) * e2_1u(ji,jj) * ( e3t_t_b(ji,jj,jk) - e3t_t_b(ji+1,jj ,jk) ) 304 vn_td(ji,jj,jk) = rn_ahe3 * vmask(ji,jj,jk) * e1_2v(ji,jj) * ( e3t_t_b(ji,jj,jk) - e3t_t_b(ji ,jj+1,jk) ) 305 305 zwu(ji,jj) = zwu(ji,jj) + un_td(ji,jj,jk) 306 306 zwv(ji,jj) = zwv(ji,jj) + vn_td(ji,jj,jk) … … 341 341 CALL lbc_lnk( e3t_t_a(:,:,:), 'T', 1. ) 342 342 e3t_t_a(:,:,:) = e3t_t_b(:,:,:) + z2dt * tmask(:,:,:) * e3t_t_a(:,:,:) 343 fse3t_a(:,:,:) = fse3t_0(:,:,:) + e3t_t_a(:,:,:)344 343 345 344 ! Maximum deformation control … … 349 348 ze3t(:,:,jpk) = 0.e0 350 349 DO jk = 1, jpkm1 351 ze3t(:,:,jk) = e3t_t_a(:,:,jk) / fse3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:)350 ze3t(:,:,jk) = e3t_t_a(:,:,jk) / e3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 352 351 END DO 353 352 z_tmax = MAXVAL( ze3t(:,:,:) ) … … 357 356 ijk_max = MAXLOC( ze3t(:,:,:) ) 358 357 ijk_min = MINLOC( ze3t(:,:,:) ) 359 WRITE(numout, *) 'MAX( e3t_t_a(:,:,:) / fse3t_0(:,:,:) ) =', z_tmax358 WRITE(numout, *) 'MAX( e3t_t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmax 360 359 WRITE(numout, *) 'at i, j, k=', ijk_max 361 WRITE(numout, *) 'MIN( e3t_t_a(:,:,:) / fse3t_0(:,:,:) ) =', z_tmin360 WRITE(numout, *) 'MIN( e3t_t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmin 362 361 WRITE(numout, *) 'at i, j, k=', ijk_min 363 CALL ctl_stop('MAX( ABS( e3t_t_a(:,:,:) ) / fse3t_0(:,:,:) ) too high')362 CALL ctl_stop('MAX( ABS( e3t_t_a(:,:,:) ) / e3t_0(:,:,:) ) too high') 364 363 ENDIF 365 364 ! - ML - end test 366 365 ! - ML - This will cause a baroclinicity error if the ctl_stop above is not used 367 e3t_t_a(:,:,:) = MIN( e3t_t_a(:,:,:), ( 1.e0 + z_def_max ) * fse3t_0(:,:,:) ) 368 e3t_t_a(:,:,:) = MAX( e3t_t_a(:,:,:), ( 1.e0 - z_def_max ) * fse3t_0(:,:,:) ) 366 e3t_t_a(:,:,:) = MIN( e3t_t_a(:,:,:), ( 1.e0 + z_def_max ) * e3t_0(:,:,:) ) 367 e3t_t_a(:,:,:) = MAX( e3t_t_a(:,:,:), ( 1.e0 - z_def_max ) * e3t_0(:,:,:) ) 368 369 ! Add "tilda" part to the after scale factor 370 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 371 fse3t_a(:,:,:) = e3t_0(:,:,:) + e3t_t_a(:,:,:) 369 372 370 373 ! III - Barotropic repartition of the sea surface height over the baroclinic profile … … 372 375 ! add e3t(n-1) "star" Asselin-filtered 373 376 DO jk = 1, jpkm1 374 fse3t_a(:,:,jk) = fse3t_a(:,:,jk) + fse3t_b(:,:,jk) - fse3t_0(:,:,jk) - e3t_t_b(:,:,jk)377 fse3t_a(:,:,jk) = fse3t_a(:,:,jk) + fse3t_b(:,:,jk) - e3t_0(:,:,jk) - e3t_t_b(:,:,jk) 375 378 END DO 376 379 ! add ( ssh increment + "baroclinicity error" ) proportionnaly to e3t(n) … … 389 392 ENDIF 390 393 391 IF( ln_ debug ) THEN ! - ML - test: control prints for debuging394 IF( ln_vvl_dbg ) THEN ! - ML - test: control prints for debuging 392 395 IF ( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 393 396 WRITE(numout, *) 'kt =', kt 394 WRITE(numout, *) 'MAXVAL(abs( ht_0-SUM(e3t_t_a))) =', &395 & MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) -zht(:,:) ) )397 WRITE(numout, *) 'MAXVAL(abs(SUM(e3t_t_a))) =', & 398 & MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( zht(:,:) ) ) 396 399 END IF 397 400 zht(:,:) = 0.e0 … … 405 408 zht(:,:) = zht(:,:) + fse3t_a(:,:,jk) * tmask(:,:,jk) 406 409 END DO 407 WRITE(numout, *) 'MAXVAL(abs(ht_0+ssh n-SUM(fse3t_a))) =', &410 WRITE(numout, *) 'MAXVAL(abs(ht_0+ssha-SUM(fse3t_a))) =', & 408 411 & MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssha(:,:) - zht(:,:) ) ) 409 412 END IF … … 467 470 e3t_t_b(:,:,:) = e3t_t_n(:,:,:) 468 471 ELSE 469 e3t_t_b(:,:,:) = e3t_t_n(:,:,:) + atfp * ( e3t_t_b(:,:,:) - 2.e0 * e3t_t_n(:,:,:) + e3t_t_a(:,:,:) )472 e3t_t_b(:,:,:) = e3t_t_n(:,:,:) + atfp * ( e3t_t_b(:,:,:) - 2.e0 * e3t_t_n(:,:,:) + e3t_t_a(:,:,:) ) 470 473 ENDIF 471 474 e3t_t_n(:,:,:) = e3t_t_a(:,:,:) … … 508 511 ! Inverse of the local depth 509 512 hur(:,:) = umask(:,:,1) / ( hu(:,:) + 1. - umask(:,:,1) ) 510 hvr(:,:) = vmask(:,:,1) / ( hv(:,:) + 1. - umask(:,:,1) )513 hvr(:,:) = vmask(:,:,1) / ( hv(:,:) + 1. - vmask(:,:,1) ) 511 514 512 515 ! Write outputs 513 516 ! ============= 514 ! - ML - add output variables in xml file for all configurations 515 z_e3t_def(:,:,:) = ( ( fse3t_n(:,:,:) - fse3t_0(:,:,:) ) / fse3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 517 z_e3t_def(:,:,:) = ( ( fse3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 516 518 CALL iom_put( "e3t_n" , fse3t_n (:,:,:) ) 517 519 CALL iom_put( "dept_n" , fsde3w_n (:,:,:) ) … … 548 550 ! ! ------------------------------------- ! 549 551 ! horizontal surface weighted interpolation 550 DO jk = 1, jpk m1551 DO jj = 2, jpjm1552 DO jk = 1, jpk 553 DO jj = 1, jpjm1 552 554 DO ji = 1, fs_jpim1 ! vector opt. 553 555 pe3_out(ji,jj,jk) = 0.5 * umask(ji,jj,jk) * e12u_1(ji,jj) & 554 & * ( e12t(ji ,jj) * ( pe3_in(ji ,jj,jk) - fse3t_0(ji ,jj,jk) ) &555 & + e12t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - fse3t_0(ji+1,jj,jk) ) )556 & * ( e12t(ji ,jj) * ( pe3_in(ji ,jj,jk) - e3t_0(ji ,jj,jk) ) & 557 & + e12t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 556 558 END DO 557 559 END DO … … 559 561 ! boundary conditions 560 562 CALL lbc_lnk( pe3_out(:,:,:), 'U', 1. ) 561 pe3_out(:,:,:) = pe3_out(:,:,:) + fse3u_0(:,:,:)563 pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 562 564 ! ! ------------------------------------- ! 563 565 CASE( 'V' ) ! interpolation from T-point to V-point ! 564 566 ! ! ------------------------------------- ! 565 567 ! horizontal surface weighted interpolation 566 DO jk = 1, jpk m1568 DO jk = 1, jpk 567 569 DO jj = 1, jpjm1 568 DO ji = fs_2, fs_jpim1 ! vector opt.570 DO ji = 1, fs_jpim1 ! vector opt. 569 571 pe3_out(ji,jj,jk) = 0.5 * vmask(ji,jj,jk) * e12v_1(ji,jj) & 570 & * ( e12t(ji,jj ) * ( pe3_in(ji,jj ,jk) - fse3t_0(ji,jj ,jk) ) &571 & + e12t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - fse3t_0(ji,jj+1,jk) ) )572 & * ( e12t(ji,jj ) * ( pe3_in(ji,jj ,jk) - e3t_0(ji,jj ,jk) ) & 573 & + e12t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 572 574 END DO 573 575 END DO … … 575 577 ! boundary conditions 576 578 CALL lbc_lnk( pe3_out(:,:,:), 'V', 1. ) 577 pe3_out(:,:,:) = pe3_out(:,:,:) + fse3v_0(:,:,:)579 pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 578 580 ! ! ------------------------------------- ! 579 581 CASE( 'F' ) ! interpolation from U-point to F-point ! 580 582 ! ! ------------------------------------- ! 581 583 ! horizontal surface weighted interpolation 582 DO jk = 1, jpk m1584 DO jk = 1, jpk 583 585 DO jj = 1, jpjm1 584 586 DO ji = 1, fs_jpim1 ! vector opt. 585 587 pe3_out(ji,jj,jk) = 0.5 * umask(ji,jj,jk) * umask(ji,jj+1,jk) * e12f_1(ji,jj) & 586 & * ( e12u(ji,jj ) * ( pe3_in(ji,jj ,jk) - fse3u_0(ji,jj ,jk) ) &587 & + e12u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - fse3u_0(ji,jj+1,jk) ) )588 & * ( e12u(ji,jj ) * ( pe3_in(ji,jj ,jk) - e3u_0(ji,jj ,jk) ) & 589 & + e12u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 588 590 END DO 589 591 END DO … … 591 593 ! boundary conditions 592 594 CALL lbc_lnk( pe3_out(:,:,:), 'F', 1. ) 593 pe3_out(:,:,:) = pe3_out(:,:,:) + fse3f_0(:,:,:)595 pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 594 596 ! ! ------------------------------------- ! 595 597 CASE( 'W' ) ! interpolation from T-point to W-point ! 596 598 ! ! ------------------------------------- ! 597 599 ! vertical simple interpolation 598 pe3_out(:,:,1) = fse3w_0(:,:,1) + pe3_in(:,:,1) - fse3t_0(:,:,1)600 pe3_out(:,:,1) = e3w_0(:,:,1) + pe3_in(:,:,1) - e3t_0(:,:,1) 599 601 ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without undirect adressing 600 602 DO jk = 2, jpk 601 pe3_out(:,:,jk) = fse3w_0(:,:,jk) + ( 1. - 0.5 * tmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - fse3t_0(:,:,jk-1) ) &602 & + ( 0.5 * tmask(:,:,jk) ) * ( pe3_in(:,:,jk ) - fse3t_0(:,:,jk ) )603 pe3_out(:,:,jk) = e3w_0(:,:,jk) + ( 1. - 0.5 * tmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3t_0(:,:,jk-1) ) & 604 & + 0.5 * tmask(:,:,jk) * ( pe3_in(:,:,jk ) - e3t_0(:,:,jk ) ) 603 605 END DO 604 606 ! ! -------------------------------------- ! … … 606 608 ! ! -------------------------------------- ! 607 609 ! vertical simple interpolation 608 pe3_out(:,:,1) = fse3uw_0(:,:,1) + pe3_in(:,:,1) - fse3u_0(:,:,1)610 pe3_out(:,:,1) = e3uw_0(:,:,1) + pe3_in(:,:,1) - e3u_0(:,:,1) 609 611 ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without undirect adressing 610 612 DO jk = 2, jpk 611 pe3_out(:,:,jk) = fse3uw_0(:,:,jk) + ( 1. - 0.5 * umask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - fse3u_0(:,:,jk-1) ) &612 & + ( 0.5 * umask(:,:,jk) ) * ( pe3_in(:,:,jk ) - fse3u_0(:,:,jk ) )613 pe3_out(:,:,jk) = e3uw_0(:,:,jk) + ( 1. - 0.5 * umask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3u_0(:,:,jk-1) ) & 614 & + 0.5 * umask(:,:,jk) * ( pe3_in(:,:,jk ) - e3u_0(:,:,jk ) ) 613 615 END DO 614 616 ! ! -------------------------------------- ! … … 616 618 ! ! -------------------------------------- ! 617 619 ! vertical simple interpolation 618 pe3_out(:,:,1) = fse3vw_0(:,:,1) + pe3_in(:,:,1) - fse3v_0(:,:,1)620 pe3_out(:,:,1) = e3vw_0(:,:,1) + pe3_in(:,:,1) - e3v_0(:,:,1) 619 621 ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without undirect adressing 620 622 DO jk = 2, jpk 621 pe3_out(:,:,jk) = fse3vw_0(:,:,jk) + ( 1. - 0.5 * vmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - fse3v_0(:,:,jk-1) ) &622 & + ( 0.5 * vmask(:,:,jk) ) * ( pe3_in(:,:,jk ) - fse3v_0(:,:,jk ) )623 pe3_out(:,:,jk) = e3vw_0(:,:,jk) + ( 1. - 0.5 * vmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3v_0(:,:,jk-1) ) & 624 & + 0.5 * vmask(:,:,jk) * ( pe3_in(:,:,jk ) - e3v_0(:,:,jk ) ) 623 625 END DO 624 626 END SELECT … … 694 696 ! 695 697 ELSE !* Initialize at "rest" 696 fse3t_b(:,:,:) = fse3t_0(:,:,:) 697 fse3t_n(:,:,:) = fse3t_0(:,:,:) 698 e3t_t_b(:,:,:) = 0.e0 699 e3t_t_n(:,:,:) = 0.e0 700 hdiv_lf(:,:,:) = 0.e0 698 fse3t_b(:,:,:) = e3t_0(:,:,:) 699 fse3t_n(:,:,:) = e3t_0(:,:,:) 700 IF( ln_vvl_ztilde .OR. ln_vvl_layer) THEN 701 e3t_t_b(:,:,:) = 0.e0 702 e3t_t_n(:,:,:) = 0.e0 703 IF( ln_vvl_ztilde ) hdiv_lf(:,:,:) = 0.e0 704 END IF 701 705 ENDIF 702 706 … … 735 739 INTEGER :: ioptio 736 740 737 NAMELIST/nam_vvl/ ln_vvl_zstar, ln_vvl_ztilde, ln_vvl_layer, ahe3! , ln_vvl_kepe741 NAMELIST/nam_vvl/ ln_vvl_zstar, ln_vvl_ztilde, ln_vvl_layer, rn_ahe3, ln_vvl_dbg! , ln_vvl_kepe 738 742 !!---------------------------------------------------------------------- 739 743 … … 752 756 ! WRITE(numout,*) ' ln_vvl_kepe = ', ln_vvl_kepe 753 757 WRITE(numout,*) ' Namelist nam_vvl : thickness diffusion coefficient' 754 WRITE(numout,*) ' ahe3 = ', ahe3 758 WRITE(numout,*) ' rn_ahe3 = ', rn_ahe3 759 WRITE(numout,*) ' Namelist nam_vvl : debug prints' 760 WRITE(numout,*) ' ln_vvl_dbg = ', ln_vvl_dbg 755 761 ENDIF 756 762 -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90
r2715 r3839 180 180 CALL iom_rstput( 0, 0, inum4, 'esigw', esigw ) 181 181 ! 182 CALL iom_rstput( 0, 0, inum4, 'e3t ', e3t )! ! scale factors183 CALL iom_rstput( 0, 0, inum4, 'e3u ', e3u)184 CALL iom_rstput( 0, 0, inum4, 'e3v ', e3v)185 CALL iom_rstput( 0, 0, inum4, 'e3w ', e3w)186 ! 187 CALL iom_rstput( 0, 0, inum4, 'gdept_ 0' , gdept_0 )! ! stretched system188 CALL iom_rstput( 0, 0, inum4, 'gdepw_ 0' , gdepw_0)182 CALL iom_rstput( 0, 0, inum4, 'e3t_0', e3t_0 ) ! ! scale factors 183 CALL iom_rstput( 0, 0, inum4, 'e3u_0', e3u_0 ) 184 CALL iom_rstput( 0, 0, inum4, 'e3v_0', e3v_0 ) 185 CALL iom_rstput( 0, 0, inum4, 'e3w_0', e3w_0 ) 186 ! 187 CALL iom_rstput( 0, 0, inum4, 'gdept_1d' , gdept_1d ) ! ! stretched system 188 CALL iom_rstput( 0, 0, inum4, 'gdepw_1d' , gdepw_1d ) 189 189 ENDIF 190 190 … … 192 192 ! 193 193 IF( nmsh <= 6 ) THEN ! ! 3D vertical scale factors 194 CALL iom_rstput( 0, 0, inum4, 'e3t ', e3t)195 CALL iom_rstput( 0, 0, inum4, 'e3u ', e3u)196 CALL iom_rstput( 0, 0, inum4, 'e3v ', e3v)197 CALL iom_rstput( 0, 0, inum4, 'e3w ', e3w)194 CALL iom_rstput( 0, 0, inum4, 'e3t_0', e3t_0 ) 195 CALL iom_rstput( 0, 0, inum4, 'e3u_0', e3u_0 ) 196 CALL iom_rstput( 0, 0, inum4, 'e3v_0', e3v_0 ) 197 CALL iom_rstput( 0, 0, inum4, 'e3w_0', e3w_0 ) 198 198 ELSE ! ! 2D masked bottom ocean scale factors 199 199 DO jj = 1,jpj 200 200 DO ji = 1,jpi 201 e3tp(ji,jj) = e3t (ji,jj,mbkt(ji,jj)) * tmask(ji,jj,1)202 e3wp(ji,jj) = e3w (ji,jj,mbkt(ji,jj)) * tmask(ji,jj,1)201 e3tp(ji,jj) = e3t_0(ji,jj,mbkt(ji,jj)) * tmask(ji,jj,1) 202 e3wp(ji,jj) = e3w_0(ji,jj,mbkt(ji,jj)) * tmask(ji,jj,1) 203 203 END DO 204 204 END DO … … 208 208 ! 209 209 IF( nmsh <= 3 ) THEN ! ! 3D depth 210 CALL iom_rstput( 0, 0, inum4, 'gdept ', gdept, ktype = jp_r4 )210 CALL iom_rstput( 0, 0, inum4, 'gdept_0', gdept_0, ktype = jp_r4 ) 211 211 DO jk = 1,jpk 212 212 DO jj = 1, jpjm1 213 213 DO ji = 1, fs_jpim1 ! vector opt. 214 zdepu(ji,jj,jk) = MIN( gdept (ji,jj,jk) , gdept(ji+1,jj ,jk) )215 zdepv(ji,jj,jk) = MIN( gdept (ji,jj,jk) , gdept(ji ,jj+1,jk) )214 zdepu(ji,jj,jk) = MIN( gdept_0(ji,jj,jk) , gdept_0(ji+1,jj ,jk) ) 215 zdepv(ji,jj,jk) = MIN( gdept_0(ji,jj,jk) , gdept_0(ji ,jj+1,jk) ) 216 216 END DO 217 217 END DO … … 220 220 CALL iom_rstput( 0, 0, inum4, 'gdepu', zdepu, ktype = jp_r4 ) 221 221 CALL iom_rstput( 0, 0, inum4, 'gdepv', zdepv, ktype = jp_r4 ) 222 CALL iom_rstput( 0, 0, inum4, 'gdepw ', gdepw, ktype = jp_r4 )222 CALL iom_rstput( 0, 0, inum4, 'gdepw_0', gdepw_0, ktype = jp_r4 ) 223 223 ELSE ! ! 2D bottom depth 224 224 DO jj = 1,jpj 225 225 DO ji = 1,jpi 226 zprt(ji,jj) = gdept (ji,jj,mbkt(ji,jj) ) * tmask(ji,jj,1)227 zprw(ji,jj) = gdepw (ji,jj,mbkt(ji,jj)+1) * tmask(ji,jj,1)226 zprt(ji,jj) = gdept_0(ji,jj,mbkt(ji,jj) ) * tmask(ji,jj,1) 227 zprw(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1) * tmask(ji,jj,1) 228 228 END DO 229 229 END DO … … 232 232 ENDIF 233 233 ! 234 CALL iom_rstput( 0, 0, inum4, 'gdept_ 0', gdept_0 )! ! reference z-coord.235 CALL iom_rstput( 0, 0, inum4, 'gdepw_ 0', gdepw_0)236 CALL iom_rstput( 0, 0, inum4, 'e3t_ 0' , e3t_0)237 CALL iom_rstput( 0, 0, inum4, 'e3w_ 0' , e3w_0)234 CALL iom_rstput( 0, 0, inum4, 'gdept_1d', gdept_1d ) ! ! reference z-coord. 235 CALL iom_rstput( 0, 0, inum4, 'gdepw_1d', gdepw_1d ) 236 CALL iom_rstput( 0, 0, inum4, 'e3t_1d' , e3t_1d ) 237 CALL iom_rstput( 0, 0, inum4, 'e3w_1d' , e3w_1d ) 238 238 ENDIF 239 239 240 240 IF( ln_zco ) THEN 241 241 ! ! z-coordinate - full steps 242 CALL iom_rstput( 0, 0, inum4, 'gdept_ 0', gdept_0 )! ! depth243 CALL iom_rstput( 0, 0, inum4, 'gdepw_ 0', gdepw_0)244 CALL iom_rstput( 0, 0, inum4, 'e3t_ 0' , e3t_0 )! ! scale factors245 CALL iom_rstput( 0, 0, inum4, 'e3w_ 0' , e3w_0)242 CALL iom_rstput( 0, 0, inum4, 'gdept_1d', gdept_1d ) ! ! depth 243 CALL iom_rstput( 0, 0, inum4, 'gdepw_1d', gdepw_1d ) 244 CALL iom_rstput( 0, 0, inum4, 'e3t_1d' , e3t_1d ) ! ! scale factors 245 CALL iom_rstput( 0, 0, inum4, 'e3w_1d' , e3w_1d ) 246 246 ENDIF 247 247 ! ! ============================ -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r2715 r3839 78 78 !! ln_zco=T z-coordinate 79 79 !! ln_zps=T z-coordinate with partial steps 80 !! ln_ zco=T s-coordinate80 !! ln_sco=T s-coordinate 81 81 !! 82 82 !! ** Action : define gdep., e3., mbathy and bathy … … 124 124 IF( nprint == 1 .AND. lwp ) THEN 125 125 WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 126 WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ), &127 & ' w ', MINVAL( fsdepw(:,:,:) ), '3w ', MINVAL( fsde3w(:,:,:) )128 WRITE(numout,*) ' MIN val e3 t ', MINVAL( fse3t(:,:,:) ), ' f ', MINVAL( fse3f(:,:,:) ), &129 & ' u ', MINVAL( fse3u(:,:,:) ), ' u ', MINVAL( fse3v(:,:,:) ), &130 & ' uw', MINVAL( fse3uw(:,:,:)), ' vw', MINVAL( fse3vw(:,:,:)), &131 & ' w ', MINVAL( fse3w(:,:,:) )132 133 WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ), &134 & ' w ', MAXVAL( fsdepw(:,:,:) ), '3w ', MAXVAL( fsde3w(:,:,:) )135 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( fse3t(:,:,:) ), ' f ', MAXVAL( fse3f(:,:,:) ), &136 & ' u ', MAXVAL( fse3u(:,:,:) ), ' u ', MAXVAL( fse3v(:,:,:) ), &137 & ' uw', MAXVAL( fse3uw(:,:,:)), ' vw', MAXVAL( fse3vw(:,:,:)), &138 & ' w ', MAXVAL( fse3w(:,:,:) )126 WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ), & 127 & ' w ', MINVAL( gdepw_0(:,:,:) ), '3w ', MINVAL( gdep3w_0(:,:,:) ) 128 WRITE(numout,*) ' MIN val e3 t ', MINVAL( e3t_0(:,:,:) ), ' f ', MINVAL( e3f_0(:,:,:) ), & 129 & ' u ', MINVAL( e3u_0(:,:,:) ), ' u ', MINVAL( e3v_0(:,:,:) ), & 130 & ' uw', MINVAL( e3uw_0(:,:,:)), ' vw', MINVAL( e3vw_0(:,:,:)), & 131 & ' w ', MINVAL( e3w_0(:,:,:) ) 132 133 WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ), & 134 & ' w ', MAXVAL( gdepw_0(:,:,:) ), '3w ', MAXVAL( gdep3w_0(:,:,:) ) 135 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( e3t_0(:,:,:) ), ' f ', MAXVAL( e3f_0(:,:,:) ), & 136 & ' u ', MAXVAL( e3u_0(:,:,:) ), ' u ', MAXVAL( e3v_0(:,:,:) ), & 137 & ' uw', MAXVAL( e3uw_0(:,:,:)), ' vw', MAXVAL( e3vw_0(:,:,:)), & 138 & ' w ', MAXVAL( e3w_0(:,:,:) ) 139 139 ENDIF 140 140 ! … … 153 153 !! function the derivative of which gives the scale factors. 154 154 !! both depth and scale factors only depend on k (1d arrays). 155 !! w-level: gdepw_ 0 = fsdep(k)156 !! e3w_ 0(k) = dk(fsdep)(k) = fse3(k)157 !! t-level: gdept_ 0 = fsdep(k+0.5)158 !! e3t_ 0(k) = dk(fsdep)(k+0.5) = fse3(k+0.5)159 !! 160 !! ** Action : - gdept_ 0, gdepw_0: depth of T- and W-point (m)161 !! - e3t_ 0 , e3w_0: scale factors at T- and W-levels (m)155 !! w-level: gdepw_1d = gdep(k) 156 !! e3w_1d(k) = dk(gdep)(k) = e3(k) 157 !! t-level: gdept_1d = gdep(k+0.5) 158 !! e3t_1d(k) = dk(gdep)(k+0.5) = e3(k+0.5) 159 !! 160 !! ** Action : - gdept_1d, gdepw_1d : depth of T- and W-point (m) 161 !! - e3t_1d , e3w_1d : scale factors at T- and W-levels (m) 162 162 !! 163 163 !! Reference : Marti, Madec & Delecluse, 1992, JGR, 97, No8, 12,763-12,766. … … 229 229 zw = FLOAT( jk ) 230 230 zt = FLOAT( jk ) + 0.5_wp 231 gdepw_ 0(jk) = ( zw - 1 ) * za1232 gdept_ 0(jk) = ( zt - 1 ) * za1233 e3w_ 0(jk) = za1234 e3t_ 0(jk) = za1231 gdepw_1d(jk) = ( zw - 1 ) * za1 232 gdept_1d(jk) = ( zt - 1 ) * za1 233 e3w_1d (jk) = za1 234 e3t_1d (jk) = za1 235 235 END DO 236 236 ELSE ! Madec & Imbard 1996 function … … 239 239 zw = REAL( jk , wp ) 240 240 zt = REAL( jk , wp ) + 0.5_wp 241 gdepw_ 0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) ) )242 gdept_ 0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) ) )243 e3w_ 0(jk) = za0 + za1 * TANH( (zw-zkth) / zacr )244 e3t_ 0(jk) = za0 + za1 * TANH( (zt-zkth) / zacr )241 gdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) ) ) 242 gdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) ) ) 243 e3w_1d (jk) = za0 + za1 * TANH( (zw-zkth) / zacr ) 244 e3t_1d (jk) = za0 + za1 * TANH( (zt-zkth) / zacr ) 245 245 END DO 246 246 ELSE … … 249 249 zt = FLOAT( jk ) + 0.5_wp 250 250 ! Double tanh function 251 gdepw_ 0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth ) / zacr ) ) &252 & + za2 * zacr2* LOG ( COSH( (zw-zkth2) / zacr2 ) ) )253 gdept_ 0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth ) / zacr ) ) &254 & + za2 * zacr2* LOG ( COSH( (zt-zkth2) / zacr2 ) ) )255 e3w_ 0(jk) = za0 + za1 * TANH( (zw-zkth ) / zacr ) &256 & + za2 * TANH( (zw-zkth2) / zacr2 )257 e3t_ 0(jk) = za0 + za1 * TANH( (zt-zkth ) / zacr ) &258 & + za2 * TANH( (zt-zkth2) / zacr2 )251 gdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth ) / zacr ) ) & 252 & + za2 * zacr2* LOG ( COSH( (zw-zkth2) / zacr2 ) ) ) 253 gdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth ) / zacr ) ) & 254 & + za2 * zacr2* LOG ( COSH( (zt-zkth2) / zacr2 ) ) ) 255 e3w_1d (jk) = za0 + za1 * TANH( (zw-zkth ) / zacr ) & 256 & + za2 * TANH( (zw-zkth2) / zacr2 ) 257 e3t_1d (jk) = za0 + za1 * TANH( (zt-zkth ) / zacr ) & 258 & + za2 * TANH( (zt-zkth2) / zacr2 ) 259 259 END DO 260 260 ENDIF 261 gdepw_ 0(1) = 0._wp ! force first w-level to be exactly at zero261 gdepw_1d(1) = 0._wp ! force first w-level to be exactly at zero 262 262 ENDIF 263 263 264 264 !!gm BUG in s-coordinate this does not work! 265 265 ! deepest/shallowest W level Above/Below ~10m 266 zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_ 0 )! ref. depth with tolerance (10% of minimum layer thickness)267 nlb10 = MINLOC( gdepw_ 0, mask = gdepw_0> zrefdep, dim = 1 ) ! shallowest W level Below ~10m268 nla10 = nlb10 - 1 ! deepest W level Above ~10m266 zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_1d ) ! ref. depth with tolerance (10% of minimum layer thickness) 267 nlb10 = MINLOC( gdepw_1d, mask = gdepw_1d > zrefdep, dim = 1 ) ! shallowest W level Below ~10m 268 nla10 = nlb10 - 1 ! deepest W level Above ~10m 269 269 !!gm end bug 270 270 … … 272 272 WRITE(numout,*) 273 273 WRITE(numout,*) ' Reference z-coordinate depth and scale factors:' 274 WRITE(numout, "(9x,' level gdept gdepw e3t e3w')" )275 WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_ 0(jk), gdepw_0(jk), e3t_0(jk), e3w_0(jk), jk = 1, jpk )274 WRITE(numout, "(9x,' level gdept_1d gdepw_1d e3t_1d e3w_1d ')" ) 275 WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_1d(jk), gdepw_1d(jk), e3t_1d(jk), e3w_1d(jk), jk = 1, jpk ) 276 276 ENDIF 277 277 DO jk = 1, jpk ! control positivity 278 IF( e3w_ 0 (jk) <= 0._wp .OR. e3t_0 (jk) <= 0._wp ) CALL ctl_stop( 'dom:zgr_z: e3w or e3t=< 0 ' )279 IF( gdepw_ 0(jk) < 0._wp .OR. gdept_0(jk) < 0._wp ) CALL ctl_stop( 'dom:zgr_z: gdepw or gdept< 0 ' )278 IF( e3w_1d (jk) <= 0._wp .OR. e3t_1d (jk) <= 0._wp ) CALL ctl_stop( 'dom:zgr_z: e3w_1d or e3t_1d =< 0 ' ) 279 IF( gdepw_1d(jk) < 0._wp .OR. gdept_1d(jk) < 0._wp ) CALL ctl_stop( 'dom:zgr_z: gdepw_1d or gdept_1d < 0 ' ) 280 280 END DO 281 281 ! … … 336 336 IF(lwp) WRITE(numout,*) ' bathymetry field: flat basin' 337 337 idta(:,:) = jpkm1 ! before last level 338 zdta(:,:) = gdepw_ 0(jpk)! last w-point depth339 h_oce = gdepw_ 0(jpk)338 zdta(:,:) = gdepw_1d(jpk) ! last w-point depth 339 h_oce = gdepw_1d(jpk) 340 340 ELSE ! bump centered in the basin 341 341 IF(lwp) WRITE(numout,*) … … 345 345 r_bump = 50000._wp ! bump radius (meters) 346 346 h_bump = 2700._wp ! bump height (meters) 347 h_oce = gdepw_ 0(jpk)! background ocean depth (meters)347 h_oce = gdepw_1d(jpk) ! background ocean depth (meters) 348 348 IF(lwp) WRITE(numout,*) ' bump characteristics: ' 349 349 IF(lwp) WRITE(numout,*) ' bump center (i,j) = ', ii_bump, ii_bump … … 365 365 idta(:,:) = jpkm1 366 366 DO jk = 1, jpkm1 367 WHERE( gdept_ 0(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_0(jk+1) ) idta(:,:) = jk367 WHERE( gdept_1d(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_1d(jk+1) ) idta(:,:) = jk 368 368 END DO 369 369 ENDIF … … 502 502 ! ! =========================== ! 503 503 IF ( .not. ln_sco ) THEN 504 IF( rn_hmin < 0._wp ) THEN ; ik = - INT( rn_hmin ) ! from a nb of level505 ELSE ; ik = MINLOC( gdepw_ 0, mask = gdepw_0> rn_hmin, dim = 1 ) ! from a depth504 IF( rn_hmin < 0._wp ) THEN ; ik = - INT( rn_hmin ) ! from a nb of level 505 ELSE ; ik = MINLOC( gdepw_1d, mask = gdepw_1d > rn_hmin, dim = 1 ) ! from a depth 506 506 ENDIF 507 zhmin = gdepw_ 0(ik+1)! minimum depth = ik+1 w-levels507 zhmin = gdepw_1d(ik+1) ! minimum depth = ik+1 w-levels 508 508 WHERE( bathy(:,:) <= 0._wp ) ; bathy(:,:) = 0._wp ! min=0 over the lands 509 509 ELSE WHERE ; bathy(:,:) = MAX( zhmin , bathy(:,:) ) ! min=zhmin over the oceans … … 762 762 ! 763 763 DO jk = 1, jpk 764 fsdept(:,:,jk) = gdept_0(jk)765 fsdepw(:,:,jk) = gdepw_0(jk)766 fsde3w(:,:,jk) = gdepw_0(jk)767 fse3t (:,:,jk) = e3t_0(jk)768 fse3u (:,:,jk) = e3t_0(jk)769 fse3v (:,:,jk) = e3t_0(jk)770 fse3f (:,:,jk) = e3t_0(jk)771 fse3w (:,:,jk) = e3w_0(jk)772 fse3uw(:,:,jk) = e3w_0(jk)773 fse3vw(:,:,jk) = e3w_0(jk)764 gdept_0 (:,:,jk) = gdept_1d(jk) 765 gdepw_0 (:,:,jk) = gdepw_1d(jk) 766 gdep3w_0(:,:,jk) = gdepw_1d(jk) 767 e3t_0 (:,:,jk) = e3t_1d (jk) 768 e3u_0 (:,:,jk) = e3t_1d (jk) 769 e3v_0 (:,:,jk) = e3t_1d (jk) 770 e3f_0 (:,:,jk) = e3t_1d (jk) 771 e3w_0 (:,:,jk) = e3w_1d (jk) 772 e3uw_0 (:,:,jk) = e3w_1d (jk) 773 e3vw_0 (:,:,jk) = e3w_1d (jk) 774 774 END DO 775 775 ! … … 794 794 !! with partial steps on 3d arrays ( i, j, k ). 795 795 !! 796 !! w-level: gdepw (i,j,k) = fsdep(k)797 !! e3w (i,j,k) = dk(fsdep)(k) = fse3(i,j,k)798 !! t-level: gdept (i,j,k) = fsdep(k+0.5)799 !! e3t (i,j,k) = dk(fsdep)(k+0.5) = fse3(i,j,k+0.5)796 !! w-level: gdepw_0(i,j,k) = gdep(k) 797 !! e3w_0(i,j,k) = dk(gdep)(k) = e3(i,j,k) 798 !! t-level: gdept_0(i,j,k) = gdep(k+0.5) 799 !! e3t_0(i,j,k) = dk(gdep)(k+0.5) = e3(i,j,k+0.5) 800 800 !! 801 801 !! With the help of the bathymetric file ( bathymetry_depth_ORCA_R2.nc), … … 805 805 !! - bathy = 0 => mbathy = 0 806 806 !! - 1 < mbathy < jpkm1 807 !! - bathy > gdepw (jpk) => mbathy = jpkm1807 !! - bathy > gdepw_0(jpk) => mbathy = jpkm1 808 808 !! 809 809 !! Then, for each case, we find the new depth at t- and w- levels … … 817 817 !! schemes. 818 818 !! 819 !! c a u t i o n : gdept_ 0, gdepw_0and e3._0 are positives820 !! - - - - - - - gdept , gdepwand e3. are positives819 !! c a u t i o n : gdept_1d, gdepw_1d and e3._0 are positives 820 !! - - - - - - - gdept_0, gdepw_0 and e3. are positives 821 821 !! 822 822 !! Reference : Pacanowsky & Gnanadesikan 1997, Mon. Wea. Rev., 126, 3248-3270. … … 855 855 ! bathymetry in level (from bathy_meter) 856 856 ! =================== 857 zmax = gdepw_ 0(jpk) + e3t_0(jpk) ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_0(jpkm1) )857 zmax = gdepw_1d(jpk) + e3t_1d(jpk) ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_1d(jpkm1) ) 858 858 bathy(:,:) = MIN( zmax , bathy(:,:) ) ! bounded value of bathy (min already set at the end of zgr_bat) 859 859 WHERE( bathy(:,:) == 0._wp ) ; mbathy(:,:) = 0 ! land : set mbathy to 0 … … 863 863 ! Compute mbathy for ocean points (i.e. the number of ocean levels) 864 864 ! find the number of ocean levels such that the last level thickness 865 ! is larger than the minimum of e3zps_min and e3zps_rat * e3t_ 0(where866 ! e3t_ 0is the reference level thickness865 ! is larger than the minimum of e3zps_min and e3zps_rat * e3t_1d (where 866 ! e3t_1d is the reference level thickness 867 867 DO jk = jpkm1, 1, -1 868 zdepth = gdepw_ 0(jk) + MIN( e3zps_min, e3t_0(jk)*e3zps_rat )868 zdepth = gdepw_1d(jk) + MIN( e3zps_min, e3t_1d(jk)*e3zps_rat ) 869 869 WHERE( 0._wp < bathy(:,:) .AND. bathy(:,:) <= zdepth ) mbathy(:,:) = jk-1 870 870 END DO … … 872 872 ! Scale factors and depth at T- and W-points 873 873 DO jk = 1, jpk ! intitialization to the reference z-coordinate 874 gdept (:,:,jk) = gdept_0(jk)875 gdepw (:,:,jk) = gdepw_0(jk)876 e3t (:,:,jk) = e3t_0(jk)877 e3w (:,:,jk) = e3w_0(jk)874 gdept_0(:,:,jk) = gdept_1d(jk) 875 gdepw_0(:,:,jk) = gdepw_1d(jk) 876 e3t_0 (:,:,jk) = e3t_1d (jk) 877 e3w_0 (:,:,jk) = e3w_1d (jk) 878 878 END DO 879 879 ! … … 885 885 IF( ik == jpkm1 ) THEN 886 886 zdepwp = bathy(ji,jj) 887 ze3tp = bathy(ji,jj) - gdepw_ 0(ik)888 ze3wp = 0.5_wp * e3w_ 0(ik) * ( 1._wp + ( ze3tp/e3t_0(ik) ) )889 e3t (ji,jj,ik ) = ze3tp890 e3t (ji,jj,ik+1) = ze3tp891 e3w (ji,jj,ik ) = ze3wp892 e3w (ji,jj,ik+1) = ze3tp893 gdepw (ji,jj,ik+1) = zdepwp894 gdept (ji,jj,ik ) = gdept_0(ik-1) + ze3wp895 gdept (ji,jj,ik+1) = gdept(ji,jj,ik) + ze3tp887 ze3tp = bathy(ji,jj) - gdepw_1d(ik) 888 ze3wp = 0.5_wp * e3w_1d(ik) * ( 1._wp + ( ze3tp/e3t_1d(ik) ) ) 889 e3t_0(ji,jj,ik ) = ze3tp 890 e3t_0(ji,jj,ik+1) = ze3tp 891 e3w_0(ji,jj,ik ) = ze3wp 892 e3w_0(ji,jj,ik+1) = ze3tp 893 gdepw_0(ji,jj,ik+1) = zdepwp 894 gdept_0(ji,jj,ik ) = gdept_1d(ik-1) + ze3wp 895 gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + ze3tp 896 896 ! 897 897 ELSE ! standard case 898 IF( bathy(ji,jj) <= gdepw_ 0(ik+1) ) THEN ; gdepw(ji,jj,ik+1) = bathy(ji,jj)899 ELSE ; gdepw(ji,jj,ik+1) = gdepw_0(ik+1)898 IF( bathy(ji,jj) <= gdepw_1d(ik+1) ) THEN ; gdepw_0(ji,jj,ik+1) = bathy(ji,jj) 899 ELSE ; gdepw_0(ji,jj,ik+1) = gdepw_1d(ik+1) 900 900 ENDIF 901 !gm Bug? check the gdepw_ 0901 !gm Bug? check the gdepw_1d 902 902 ! ... on ik 903 gdept (ji,jj,ik) = gdepw_0(ik) + ( gdepw (ji,jj,ik+1) - gdepw_0(ik) ) &904 & * ((gdept_0( ik ) - gdepw_0(ik) ) &905 & / ( gdepw_0( ik+1) - gdepw_0(ik) ))906 e3t (ji,jj,ik) = e3t_0 (ik) * ( gdepw (ji,jj,ik+1) - gdepw_0(ik) ) &907 & / ( gdepw_ 0( ik+1) - gdepw_0(ik) )908 e3w (ji,jj,ik) = 0.5_wp * ( gdepw(ji,jj,ik+1) + gdepw_0(ik+1) - 2._wp * gdepw_0(ik) ) &909 & * ( e3w_ 0(ik) / ( gdepw_0(ik+1) - gdepw_0(ik) ) )903 gdept_0(ji,jj,ik) = gdepw_1d(ik) + ( gdepw_0 (ji,jj,ik+1) - gdepw_1d(ik) ) & 904 & * ((gdept_1d( ik ) - gdepw_1d(ik) ) & 905 & / ( gdepw_1d( ik+1) - gdepw_1d(ik) )) 906 e3t_0(ji,jj,ik) = e3t_1d (ik) * ( gdepw_0 (ji,jj,ik+1) - gdepw_1d(ik) ) & 907 & / ( gdepw_1d( ik+1) - gdepw_1d(ik) ) 908 e3w_0(ji,jj,ik) = 0.5_wp * ( gdepw_0(ji,jj,ik+1) + gdepw_1d(ik+1) - 2._wp * gdepw_1d(ik) ) & 909 & * ( e3w_1d(ik) / ( gdepw_1d(ik+1) - gdepw_1d(ik) ) ) 910 910 ! ... on ik+1 911 e3w (ji,jj,ik+1) = e3t(ji,jj,ik)912 e3t (ji,jj,ik+1) = e3t(ji,jj,ik)913 gdept (ji,jj,ik+1) = gdept(ji,jj,ik) + e3t(ji,jj,ik)911 e3w_0 (ji,jj,ik+1) = e3t_0 (ji,jj,ik) 912 e3t_0 (ji,jj,ik+1) = e3t_0 (ji,jj,ik) 913 gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + e3t_0(ji,jj,ik) 914 914 ENDIF 915 915 ENDIF … … 922 922 ik = mbathy(ji,jj) 923 923 IF( ik > 0 ) THEN ! ocean point only 924 e3tp (ji,jj) = e3t (ji,jj,ik)925 e3wp (ji,jj) = e3w (ji,jj,ik)924 e3tp (ji,jj) = e3t_0(ji,jj,ik) 925 e3wp (ji,jj) = e3w_0(ji,jj,ik) 926 926 ! test 927 zdiff= gdepw (ji,jj,ik+1) - gdept(ji,jj,ik )927 zdiff= gdepw_0(ji,jj,ik+1) - gdept_0(ji,jj,ik ) 928 928 IF( zdiff <= 0._wp .AND. lwp ) THEN 929 929 it = it + 1 930 930 WRITE(numout,*) ' it = ', it, ' ik = ', ik, ' (i,j) = ', ji, jj 931 931 WRITE(numout,*) ' bathy = ', bathy(ji,jj) 932 WRITE(numout,*) ' gdept = ', gdept(ji,jj,ik), ' gdepw = ', gdepw(ji,jj,ik+1), ' zdiff = ', zdiff933 WRITE(numout,*) ' e3tp = ', e3t (ji,jj,ik), ' e3wp = ', e3w(ji,jj,ik )932 WRITE(numout,*) ' gdept_0 = ', gdept_0(ji,jj,ik), ' gdepw_0 = ', gdepw_0(ji,jj,ik+1), ' zdiff = ', zdiff 933 WRITE(numout,*) ' e3tp = ', e3t_0 (ji,jj,ik), ' e3wp = ', e3w_0 (ji,jj,ik ) 934 934 ENDIF 935 935 ENDIF … … 939 939 ! Scale factors and depth at U-, V-, UW and VW-points 940 940 DO jk = 1, jpk ! initialisation to z-scale factors 941 e3u (:,:,jk) = e3t_0(jk)942 e3v (:,:,jk) = e3t_0(jk)943 e3uw (:,:,jk) = e3w_0(jk)944 e3vw (:,:,jk) = e3w_0(jk)941 e3u_0 (:,:,jk) = e3t_1d(jk) 942 e3v_0 (:,:,jk) = e3t_1d(jk) 943 e3uw_0(:,:,jk) = e3w_1d(jk) 944 e3vw_0(:,:,jk) = e3w_1d(jk) 945 945 END DO 946 946 DO jk = 1,jpk ! Computed as the minimum of neighbooring scale factors 947 947 DO jj = 1, jpjm1 948 948 DO ji = 1, fs_jpim1 ! vector opt. 949 e3u (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji+1,jj,jk) )950 e3v (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji,jj+1,jk) )951 e3uw (ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji+1,jj,jk) )952 e3vw (ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji,jj+1,jk) )953 END DO 954 END DO 955 END DO 956 CALL lbc_lnk( e3u , 'U', 1._wp ) ; CALL lbc_lnk( e3uw, 'U', 1._wp ) ! lateral boundary conditions957 CALL lbc_lnk( e3v , 'V', 1._wp ) ; CALL lbc_lnk( e3vw, 'V', 1._wp )949 e3u_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji+1,jj,jk) ) 950 e3v_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji,jj+1,jk) ) 951 e3uw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji+1,jj,jk) ) 952 e3vw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji,jj+1,jk) ) 953 END DO 954 END DO 955 END DO 956 CALL lbc_lnk( e3u_0 , 'U', 1._wp ) ; CALL lbc_lnk( e3uw_0, 'U', 1._wp ) ! lateral boundary conditions 957 CALL lbc_lnk( e3v_0 , 'V', 1._wp ) ; CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 958 958 ! 959 959 DO jk = 1, jpk ! set to z-scale factor if zero (i.e. along closed boundaries) 960 WHERE( e3u (:,:,jk) == 0._wp ) e3u (:,:,jk) = e3t_0(jk)961 WHERE( e3v (:,:,jk) == 0._wp ) e3v (:,:,jk) = e3t_0(jk)962 WHERE( e3uw (:,:,jk) == 0._wp ) e3uw(:,:,jk) = e3w_0(jk)963 WHERE( e3vw (:,:,jk) == 0._wp ) e3vw(:,:,jk) = e3w_0(jk)960 WHERE( e3u_0 (:,:,jk) == 0._wp ) e3u_0 (:,:,jk) = e3t_1d(jk) 961 WHERE( e3v_0 (:,:,jk) == 0._wp ) e3v_0 (:,:,jk) = e3t_1d(jk) 962 WHERE( e3uw_0(:,:,jk) == 0._wp ) e3uw_0(:,:,jk) = e3w_1d(jk) 963 WHERE( e3vw_0(:,:,jk) == 0._wp ) e3vw_0(:,:,jk) = e3w_1d(jk) 964 964 END DO 965 965 966 966 ! Scale factor at F-point 967 967 DO jk = 1, jpk ! initialisation to z-scale factors 968 e3f (:,:,jk) = e3t_0(jk)968 e3f_0(:,:,jk) = e3t_1d(jk) 969 969 END DO 970 970 DO jk = 1, jpk ! Computed as the minimum of neighbooring V-scale factors 971 971 DO jj = 1, jpjm1 972 972 DO ji = 1, fs_jpim1 ! vector opt. 973 e3f (ji,jj,jk) = MIN( e3v(ji,jj,jk), e3v(ji+1,jj,jk) )974 END DO 975 END DO 976 END DO 977 CALL lbc_lnk( e3f , 'F', 1._wp ) ! Lateral boundary conditions973 e3f_0(ji,jj,jk) = MIN( e3v_0(ji,jj,jk), e3v_0(ji+1,jj,jk) ) 974 END DO 975 END DO 976 END DO 977 CALL lbc_lnk( e3f_0, 'F', 1._wp ) ! Lateral boundary conditions 978 978 ! 979 979 DO jk = 1, jpk ! set to z-scale factor if zero (i.e. along closed boundaries) 980 WHERE( e3f (:,:,jk) == 0._wp ) e3f(:,:,jk) = e3t_0(jk)980 WHERE( e3f_0(:,:,jk) == 0._wp ) e3f_0(:,:,jk) = e3t_1d(jk) 981 981 END DO 982 982 !!gm bug ? : must be a do loop with mj0,mj1 983 983 ! 984 e3t (:,mj0(1),:) = e3t(:,mj0(2),:) ! we duplicate factor scales for jj = 1 and jj = 2985 e3w (:,mj0(1),:) = e3w(:,mj0(2),:)986 e3u (:,mj0(1),:) = e3u(:,mj0(2),:)987 e3v (:,mj0(1),:) = e3v(:,mj0(2),:)988 e3f (:,mj0(1),:) = e3f(:,mj0(2),:)984 e3t_0(:,mj0(1),:) = e3t_0(:,mj0(2),:) ! we duplicate factor scales for jj = 1 and jj = 2 985 e3w_0(:,mj0(1),:) = e3w_0(:,mj0(2),:) 986 e3u_0(:,mj0(1),:) = e3u_0(:,mj0(2),:) 987 e3v_0(:,mj0(1),:) = e3v_0(:,mj0(2),:) 988 e3f_0(:,mj0(1),:) = e3f_0(:,mj0(2),:) 989 989 990 990 ! Control of the sign 991 IF( MINVAL( e3t (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3t<= 0' )992 IF( MINVAL( e3w (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3w<= 0' )993 IF( MINVAL( gdept (:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdepw< 0' )994 IF( MINVAL( gdepw (:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdepw< 0' )991 IF( MINVAL( e3t_0 (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3t_0 <= 0' ) 992 IF( MINVAL( e3w_0 (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3w_0 <= 0' ) 993 IF( MINVAL( gdept_0(:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdept_0 < 0' ) 994 IF( MINVAL( gdepw_0(:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdepw_0 < 0' ) 995 995 996 ! Compute gdep3w (vertical sum of e3w)997 gdep3w (:,:,1) = 0.5_wp * e3w(:,:,1)996 ! Compute gdep3w_0 (vertical sum of e3w) 997 gdep3w_0(:,:,1) = 0.5_wp * e3w_0(:,:,1) 998 998 DO jk = 2, jpk 999 gdep3w (:,:,jk) = gdep3w(:,:,jk-1) + e3w(:,:,jk)999 gdep3w_0(:,:,jk) = gdep3w_0(:,:,jk-1) + e3w_0(:,:,jk) 1000 1000 END DO 1001 1001 … … 1006 1006 DO ji = 1, jpi 1007 1007 ik = MAX( mbathy(ji,jj), 1 ) 1008 zprt(ji,jj,1) = e3t (ji,jj,ik)1009 zprt(ji,jj,2) = e3w (ji,jj,ik)1010 zprt(ji,jj,3) = e3u (ji,jj,ik)1011 zprt(ji,jj,4) = e3v (ji,jj,ik)1012 zprt(ji,jj,5) = e3f (ji,jj,ik)1013 zprt(ji,jj,6) = gdep3w (ji,jj,ik)1008 zprt(ji,jj,1) = e3t_0 (ji,jj,ik) 1009 zprt(ji,jj,2) = e3w_0 (ji,jj,ik) 1010 zprt(ji,jj,3) = e3u_0 (ji,jj,ik) 1011 zprt(ji,jj,4) = e3v_0 (ji,jj,ik) 1012 zprt(ji,jj,5) = e3f_0 (ji,jj,ik) 1013 zprt(ji,jj,6) = gdep3w_0(ji,jj,ik) 1014 1014 END DO 1015 1015 END DO … … 1025 1025 WRITE(numout,*) 'domzgr e3f(mbathy)' ; CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 1026 1026 WRITE(numout,*) 1027 WRITE(numout,*) 'domzgr gdep3w (mbathy)'; CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)1027 WRITE(numout,*) 'domzgr gdep3w_0(mbathy)' ; CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 1028 1028 ENDIF 1029 1029 ! … … 1392 1392 zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 1393 1393 zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 1394 gdept (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigt3(ji,jj,jk)+rn_hc*zcoeft )1395 gdepw (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigw3(ji,jj,jk)+rn_hc*zcoefw )1396 gdep3w (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsi3w3(ji,jj,jk)+rn_hc*zcoeft )1394 gdept_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigt3(ji,jj,jk)+rn_hc*zcoeft ) 1395 gdepw_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigw3(ji,jj,jk)+rn_hc*zcoefw ) 1396 gdep3w_0(ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsi3w3(ji,jj,jk)+rn_hc*zcoeft ) 1397 1397 END DO 1398 1398 ! … … 1415 1415 & / ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 1416 1416 ! 1417 e3t (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigt3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1418 e3u (ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigtu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1419 e3v (ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigtv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1420 e3f (ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*esigtf3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1417 e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigt3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1418 e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigtu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1419 e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigtv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1420 e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*esigtf3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1421 1421 ! 1422 e3w (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigw3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1423 e3uw (ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigwu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1424 e3vw (ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigwv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1422 e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigw3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1423 e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigwu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1424 e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigwv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1425 1425 END DO 1426 1426 END DO 1427 1427 END DO 1428 1428 1429 CALL lbc_lnk( e3t , 'T', 1._wp )1430 CALL lbc_lnk( e3u , 'U', 1._wp )1431 CALL lbc_lnk( e3v , 'V', 1._wp )1432 CALL lbc_lnk( e3f , 'F', 1._wp )1433 CALL lbc_lnk( e3w , 'W', 1._wp )1434 CALL lbc_lnk( e3uw , 'U', 1._wp )1435 CALL lbc_lnk( e3vw , 'V', 1._wp )1429 CALL lbc_lnk( e3t_0 , 'T', 1._wp ) 1430 CALL lbc_lnk( e3u_0 , 'U', 1._wp ) 1431 CALL lbc_lnk( e3v_0 , 'V', 1._wp ) 1432 CALL lbc_lnk( e3f_0 , 'F', 1._wp ) 1433 CALL lbc_lnk( e3w_0 , 'W', 1._wp ) 1434 CALL lbc_lnk( e3uw_0, 'U', 1._wp ) 1435 CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 1436 1436 1437 1437 ! … … 1470 1470 zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 1471 1471 zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 1472 gdept (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigt(jk) + hift(:,:)*zcoeft )1473 gdepw (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigw(jk) + hift(:,:)*zcoefw )1474 gdep3w (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsi3w(jk) + hift(:,:)*zcoeft )1472 gdept_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigt(jk) + hift(:,:)*zcoeft ) 1473 gdepw_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigw(jk) + hift(:,:)*zcoefw ) 1474 gdep3w_0(:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsi3w(jk) + hift(:,:)*zcoeft ) 1475 1475 END DO 1476 1476 !!gm: e3uw, e3vw can be suppressed (modif in dynzdf, dynzdf_iso, zdfbfr) (save 2 3D arrays) … … 1478 1478 DO ji = 1, jpi 1479 1479 DO jk = 1, jpk 1480 e3t (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) )1481 e3u (ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) )1482 e3v (ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) )1483 e3f (ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) )1480 e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 1481 e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 1482 e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 1483 e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) ) 1484 1484 ! 1485 e3w (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) )1486 e3uw (ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) )1487 e3vw (ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) )1485 e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 1486 e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 1487 e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 1488 1488 END DO 1489 1489 END DO … … 1492 1492 ENDIF ! ln_s_sigma 1493 1493 1494 1495 !1496 !! H. Liu, POL. April 2009. Added for passing the scale check for the new released vvl code.1497 1498 fsdept(:,:,:) = gdept (:,:,:)1499 fsdepw(:,:,:) = gdepw (:,:,:)1500 fsde3w(:,:,:) = gdep3w(:,:,:)1501 fse3t (:,:,:) = e3t (:,:,:)1502 fse3u (:,:,:) = e3u (:,:,:)1503 fse3v (:,:,:) = e3v (:,:,:)1504 fse3f (:,:,:) = e3f (:,:,:)1505 fse3w (:,:,:) = e3w (:,:,:)1506 fse3uw(:,:,:) = e3uw (:,:,:)1507 fse3vw(:,:,:) = e3vw (:,:,:)1508 !!1509 1494 ! HYBRID : 1510 1495 DO jj = 1, jpj 1511 1496 DO ji = 1, jpi 1512 1497 DO jk = 1, jpkm1 1513 IF( scobot(ji,jj) >= fsdept(ji,jj,jk) ) mbathy(ji,jj) = MAX( 2, jk )1514 IF( scobot(ji,jj) == 0._wp ) mbathy(ji,jj) = 01498 IF( scobot(ji,jj) >= gdept_0(ji,jj,jk) ) mbathy(ji,jj) = MAX( 2, jk ) 1499 IF( scobot(ji,jj) == 0._wp ) mbathy(ji,jj) = 0 1515 1500 END DO 1516 1501 END DO … … 1528 1513 ENDIF 1529 1514 IF( nprint == 1 .AND. lwp ) THEN ! min max values over the local domain 1530 WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) )1531 WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ), &1532 & ' w ', MINVAL( fsdepw(:,:,:) ), '3w ' , MINVAL( fsde3w(:,:,:) )1533 WRITE(numout,*) ' MIN val e3 t ', MINVAL( fse3t (:,:,:) ), ' f ' , MINVAL( fse3f(:,:,:) ), &1534 & ' u ', MINVAL( fse3u (:,:,:) ), ' u ' , MINVAL( fse3v(:,:,:) ), &1535 & ' uw', MINVAL( fse3uw(:,:,:) ), ' vw' , MINVAL( fse3vw(:,:,:) ), &1536 & ' w ', MINVAL( fse3w(:,:,:) )1537 1538 WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ), &1539 & ' w ', MAXVAL( fsdepw(:,:,:) ), '3w ' , MAXVAL( fsde3w(:,:,:) )1540 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( fse3t (:,:,:) ), ' f ' , MAXVAL( fse3f(:,:,:) ), &1541 & ' u ', MAXVAL( fse3u (:,:,:) ), ' u ' , MAXVAL( fse3v(:,:,:) ), &1542 & ' uw', MAXVAL( fse3uw(:,:,:) ), ' vw' , MAXVAL( fse3vw(:,:,:) ), &1543 & ' w ', MAXVAL( fse3w(:,:,:) )1515 WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 1516 WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ), & 1517 & ' w ', MINVAL( gdepw_0(:,:,:) ), '3w ' , MINVAL( gdep3w_0(:,:,:) ) 1518 WRITE(numout,*) ' MIN val e3 t ', MINVAL( e3t_0 (:,:,:) ), ' f ' , MINVAL( e3f_0 (:,:,:) ), & 1519 & ' u ', MINVAL( e3u_0 (:,:,:) ), ' u ' , MINVAL( e3v_0 (:,:,:) ), & 1520 & ' uw', MINVAL( e3uw_0 (:,:,:) ), ' vw' , MINVAL( e3vw_0 (:,:,:) ), & 1521 & ' w ', MINVAL( e3w_0 (:,:,:) ) 1522 1523 WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ), & 1524 & ' w ', MAXVAL( gdepw_0(:,:,:) ), '3w ' , MAXVAL( gdep3w_0(:,:,:) ) 1525 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( e3t_0 (:,:,:) ), ' f ' , MAXVAL( e3f_0 (:,:,:) ), & 1526 & ' u ', MAXVAL( e3u_0 (:,:,:) ), ' u ' , MAXVAL( e3v_0 (:,:,:) ), & 1527 & ' uw', MAXVAL( e3uw_0 (:,:,:) ), ' vw' , MAXVAL( e3vw_0 (:,:,:) ), & 1528 & ' w ', MAXVAL( e3w_0 (:,:,:) ) 1544 1529 ENDIF 1545 1530 ! … … 1548 1533 WRITE(numout,*) ' domzgr: vertical coordinates : point (1,1,k) bathy = ', bathy(1,1), hbatt(1,1) 1549 1534 WRITE(numout,*) ' ~~~~~~ --------------------' 1550 WRITE(numout,"(9x,' level gdept gdepw gde3w e3t e3w')")1551 WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(1,1,jk), fsdepw(1,1,jk), &1552 & fse3t (1,1,jk), fse3w (1,1,jk), jk=1,jpk )1535 WRITE(numout,"(9x,' level gdept_0 gdepw_0 e3t_0 e3w_0')") 1536 WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(1,1,jk), gdepw_0(1,1,jk), & 1537 & e3t_0 (1,1,jk) , e3w_0 (1,1,jk) , jk=1,jpk ) 1553 1538 DO jj = mj0(20), mj1(20) 1554 1539 DO ji = mi0(20), mi1(20) … … 1556 1541 WRITE(numout,*) ' domzgr: vertical coordinates : point (20,20,k) bathy = ', bathy(ji,jj), hbatt(ji,jj) 1557 1542 WRITE(numout,*) ' ~~~~~~ --------------------' 1558 WRITE(numout,"(9x,' level gdept gdepw gde3w e3t e3w')")1559 WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk), &1560 & fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk )1543 WRITE(numout,"(9x,' level gdept_0 gdepw_0 e3t_0 e3w_0')") 1544 WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk), & 1545 & e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 1561 1546 END DO 1562 1547 END DO … … 1566 1551 WRITE(numout,*) ' domzgr: vertical coordinates : point (100,74,k) bathy = ', bathy(ji,jj), hbatt(ji,jj) 1567 1552 WRITE(numout,*) ' ~~~~~~ --------------------' 1568 WRITE(numout,"(9x,' level gdept gdepw gde3w e3t e3w')")1569 WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk), &1570 & fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk )1553 WRITE(numout,"(9x,' level gdept_0 gdepw_0 e3t_0 e3w_0')") 1554 WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk), & 1555 & e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 1571 1556 END DO 1572 1557 END DO … … 1577 1562 DO jj = 1, jpj 1578 1563 DO ji = 1, jpi 1579 IF( fse3w(ji,jj,jk) <= 0._wp .OR. fse3t(ji,jj,jk) <= 0._wp ) THEN1580 WRITE(ctmp1,*) 'zgr_sco : e3w or e3t=< 0 at point (i,j,k)= ', ji, jj, jk1564 IF( e3w_0(ji,jj,jk) <= 0._wp .OR. e3t_0(ji,jj,jk) <= 0._wp ) THEN 1565 WRITE(ctmp1,*) 'zgr_sco : e3w_0 or e3t_0 =< 0 at point (i,j,k)= ', ji, jj, jk 1581 1566 CALL ctl_stop( ctmp1 ) 1582 1567 ENDIF 1583 IF( fsdepw(ji,jj,jk) < 0._wp .OR. fsdept(ji,jj,jk) < 0._wp ) THEN1584 WRITE(ctmp1,*) 'zgr_sco : gdepw or gdept=< 0 at point (i,j,k)= ', ji, jj, jk1568 IF( gdepw_0(ji,jj,jk) < 0._wp .OR. gdept_0(ji,jj,jk) < 0._wp ) THEN 1569 WRITE(ctmp1,*) 'zgr_sco : gdepw_0 or gdept_0≈s =< 0 at point (i,j,k)= ', ji, jj, jk 1585 1570 CALL ctl_stop( ctmp1 ) 1586 1571 ENDIF -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr_substitute.h90
r2905 r3839 8 8 !! 3.1 ! 2009-02 (G. Madec, M. Leclair) pure z* coordinate 9 9 !!---------------------------------------------------------------------- 10 ! reference for s- or zps-coordinate (3D no time dependency)11 # define fsdept_0(i,j,k) gdept(i,j,k)12 # define fsdepw_0(i,j,k) gdepw(i,j,k)13 # define fsde3w_0(i,j,k) gdep3w(i,j,k)14 # define fse3t_0(i,j,k) e3t(i,j,k)15 # define fse3u_0(i,j,k) e3u(i,j,k)16 # define fse3v_0(i,j,k) e3v(i,j,k)17 # define fse3f_0(i,j,k) e3f(i,j,k)18 # define fse3w_0(i,j,k) e3w(i,j,k)19 # define fse3uw_0(i,j,k) e3uw(i,j,k)20 # define fse3vw_0(i,j,k) e3vw(i,j,k)21 10 22 11 #if defined key_vvl … … 44 33 # define fse3v_a(i,j,k) e3v_a(i,j,k) 45 34 46 # define fse3t_m(i,j) e3t_m(i,j)35 # define fse3t_m(i,j) e3t_m(i,j) 47 36 48 37 ! This part should be removed one day ... 49 # define fsdept(i,j,k) fsdept_n(i,j,k) 50 # define fsdepw(i,j,k) fsdepw_n(i,j,k) 51 # define fsde3w(i,j,k) fsde3w_n(i,j,k) 52 # define fse3t(i,j,k) fse3t_n(i,j,k) 53 # define fse3u(i,j,k) fse3u_n(i,j,k) 54 # define fse3v(i,j,k) fse3v_n(i,j,k) 55 # define fse3f(i,j,k) fse3f_n(i,j,k) 56 # define fse3w(i,j,k) fse3w_n(i,j,k) 57 # define fse3uw(i,j,k) fse3uw_n(i,j,k) 58 # define fse3vw(i,j,k) fse3vw_n(i,j,k) 38 ! ... In that case all occurence of the above statement functions 39 ! have to be replaced in the code by xxx_n 40 # define fsdept(i,j,k) gdept_n(i,j,k) 41 # define fsdepw(i,j,k) gdepw_n(i,j,k) 42 # define fsde3w(i,j,k) gdep3w_n(i,j,k) 43 # define fse3t(i,j,k) e3t_n(i,j,k) 44 # define fse3u(i,j,k) e3u_n(i,j,k) 45 # define fse3v(i,j,k) e3v_n(i,j,k) 46 # define fse3f(i,j,k) e3f_n(i,j,k) 47 # define fse3w(i,j,k) e3w_n(i,j,k) 48 # define fse3uw(i,j,k) e3uw_n(i,j,k) 49 # define fse3vw(i,j,k) e3vw_n(i,j,k) 59 50 60 51 #else 61 52 ! z- or s-coordinate (1D or 3D + no time dependency) use reference in all cases 62 # define fsdept(i,j,k) fsdept_0(i,j,k)63 # define fsdepw(i,j,k) fsdepw_0(i,j,k)64 # define fsde3w(i,j,k) fsde3w_0(i,j,k)65 # define fse3t(i,j,k) fse3t_0(i,j,k)66 # define fse3u(i,j,k) fse3u_0(i,j,k)67 # define fse3v(i,j,k) fse3v_0(i,j,k)68 # define fse3f(i,j,k) fse3f_0(i,j,k)69 # define fse3w(i,j,k) fse3w_0(i,j,k)70 # define fse3uw(i,j,k) fse3uw_0(i,j,k)71 # define fse3vw(i,j,k) fse3vw_0(i,j,k)72 53 73 # define fse3t_b(i,j,k) fse3t_0(i,j,k)74 # define fse3u_b(i,j,k) fse3u_0(i,j,k)75 # define fse3v_b(i,j,k) fse3v_0(i,j,k)76 # define fse3uw_b(i,j,k) fse3uw_0(i,j,k)77 # define fse3vw_b(i,j,k) fse3vw_0(i,j,k)54 # define fse3t_b(i,j,k) e3t_0(i,j,k) 55 # define fse3u_b(i,j,k) e3u_0(i,j,k) 56 # define fse3v_b(i,j,k) e3v_0(i,j,k) 57 # define fse3uw_b(i,j,k) e3uw_0(i,j,k) 58 # define fse3vw_b(i,j,k) e3vw_0(i,j,k) 78 59 79 # define fsdept_n(i,j,k) fsdept_0(i,j,k)80 # define fsdepw_n(i,j,k) fsdepw_0(i,j,k)81 # define fsde3w_n(i,j,k) fsde3w_0(i,j,k)82 # define fse3t_n(i,j,k) fse3t_0(i,j,k)83 # define fse3u_n(i,j,k) fse3u_0(i,j,k)84 # define fse3v_n(i,j,k) fse3v_0(i,j,k)85 # define fse3f_n(i,j,k) fse3f_0(i,j,k)86 # define fse3w_n(i,j,k) fse3w_0(i,j,k)87 # define fse3uw_n(i,j,k) fse3uw_0(i,j,k)88 # define fse3vw_n(i,j,k) fse3vw_0(i,j,k)60 # define fsdept_n(i,j,k) gdept_0(i,j,k) 61 # define fsdepw_n(i,j,k) gdepw_0(i,j,k) 62 # define fsde3w_n(i,j,k) gdep3w_0(i,j,k) 63 # define fse3t_n(i,j,k) e3t_0(i,j,k) 64 # define fse3u_n(i,j,k) e3u_0(i,j,k) 65 # define fse3v_n(i,j,k) e3v_0(i,j,k) 66 # define fse3f_n(i,j,k) e3f_0(i,j,k) 67 # define fse3w_n(i,j,k) e3w_0(i,j,k) 68 # define fse3uw_n(i,j,k) e3uw_0(i,j,k) 69 # define fse3vw_n(i,j,k) e3vw_0(i,j,k) 89 70 90 # define fse3t_m(i,j) fse3t_0(i,j,1) 71 # define fse3t_a(i,j,k) e3t_0(i,j,k) 72 # define fse3u_a(i,j,k) e3u_0(i,j,k) 73 # define fse3v_a(i,j,k) e3v_0(i,j,k) 91 74 92 # define fse3t_a(i,j,k) fse3t_0(i,j,k) 93 # define fse3u_a(i,j,k) fse3u_0(i,j,k) 94 # define fse3v_a(i,j,k) fse3v_0(i,j,k) 75 # define fse3t_m(i,j) e3t_0(i,j,1) 76 77 ! This part should be removed one day ... 78 ! ... In that case all occurence of the above statement functions 79 ! have to be replaced in the code by xxx_n 80 # define fsdept(i,j,k) gdept_0(i,j,k) 81 # define fsdepw(i,j,k) gdepw_0(i,j,k) 82 # define fsde3w(i,j,k) gdep3w_0(i,j,k) 83 # define fse3t(i,j,k) e3t_0(i,j,k) 84 # define fse3u(i,j,k) e3u_0(i,j,k) 85 # define fse3v(i,j,k) e3v_0(i,j,k) 86 # define fse3f(i,j,k) e3f_0(i,j,k) 87 # define fse3w(i,j,k) e3w_0(i,j,k) 88 # define fse3uw(i,j,k) e3uw_0(i,j,k) 89 # define fse3vw(i,j,k) e3vw_0(i,j,k) 90 95 91 #endif 96 92 !!---------------------------------------------------------------------- -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r2715 r3839 247 247 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 248 248 ! 249 zh1 = gdept_ 0( 1 )250 zh2 = gdept_ 0(jpkm1)249 zh1 = gdept_1d( 1 ) 250 zh2 = gdept_1d(jpkm1) 251 251 ! 252 252 zslope = ( zt1 - zt2 ) / ( zh1 - zh2 ) … … 428 428 WRITE(numout,*) 429 429 WRITE(numout,*) ' Initial temperature and salinity profiles:' 430 WRITE(numout, "(9x,' level gdept_ 0temperature salinity ')" )431 WRITE(numout, "(10x, i4, 3f10.2)" ) ( jk, gdept_ 0(jk), tn(2,2,jk), sn(2,2,jk), jk = 1, jpk )430 WRITE(numout, "(9x,' level gdept_1d temperature salinity ')" ) 431 WRITE(numout, "(10x, i4, 3f10.2)" ) ( jk, gdept_1d(jk), tn(2,2,jk), sn(2,2,jk), jk = 1, jpk ) 432 432 ENDIF 433 433 -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DTA/dtasal.F90
r2715 r3839 164 164 DO ji = 1, jpi 165 165 DO jk = 1, jpk 166 zl= fsdept_0(ji,jj,jk)167 IF(zl < gdept_ 0(1) ) zsaldta(jk) = s_dta(ji,jj,1 )168 IF(zl > gdept_ 0(jpk)) zsaldta(jk) = s_dta(ji,jj,jpkm1)166 zl=gdept_0(ji,jj,jk) 167 IF(zl < gdept_1d(1) ) zsaldta(jk) = s_dta(ji,jj,1 ) 168 IF(zl > gdept_1d(jpk)) zsaldta(jk) = s_dta(ji,jj,jpkm1) 169 169 DO jkk = 1, jpkm1 170 IF((zl-gdept_ 0(jkk))*(zl-gdept_0(jkk+1)).le.0.0) THEN170 IF((zl-gdept_1d(jkk))*(zl-gdept_1d(jkk+1)).le.0.0) THEN 171 171 zsaldta(jk) = s_dta(ji,jj,jkk) & 172 & + (zl-gdept_ 0(jkk))/(gdept_0(jkk+1)-gdept_0(jkk)) &173 & *(s_dta(ji,jj,jkk+1) - s_dta(ji,jj,jkk))172 & + (zl-gdept_1d(jkk))/(gdept_1d(jkk+1)-gdept_1d(jkk)) & 173 & *(s_dta(ji,jj,jkk+1) - s_dta(ji,jj,jkk)) 174 174 ENDIF 175 175 END DO … … 197 197 ik = mbkt(ji,jj) 198 198 IF( ik > 1 ) THEN 199 zl = ( gdept_ 0(ik) - fsdept_0(ji,jj,ik) ) / ( gdept_0(ik) - gdept_0(ik-1) )199 zl = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 200 200 s_dta(ji,jj,ik) = (1.-zl) * s_dta(ji,jj,ik) + zl * s_dta(ji,jj,ik-1) 201 201 ENDIF -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DTA/dtatem.F90
r2715 r3839 177 177 DO ji = 1, jpi 178 178 DO jk = 1, jpk 179 zl= fsdept_0(ji,jj,jk)180 IF(zl < gdept_ 0(1)) ztemdta(jk) = t_dta(ji,jj,1)181 IF(zl > gdept_ 0(jpk)) ztemdta(jk) = t_dta(ji,jj,jpkm1)179 zl=gdept_0(ji,jj,jk) 180 IF(zl < gdept_1d(1)) ztemdta(jk) = t_dta(ji,jj,1) 181 IF(zl > gdept_1d(jpk)) ztemdta(jk) = t_dta(ji,jj,jpkm1) 182 182 DO jkk = 1, jpkm1 183 IF((zl-gdept_ 0(jkk))*(zl-gdept_0(jkk+1)).le.0.0) THEN183 IF((zl-gdept_1d(jkk))*(zl-gdept_1d(jkk+1)).le.0.0) THEN 184 184 ztemdta(jk) = t_dta(ji,jj,jkk) & 185 & + (zl-gdept_ 0(jkk))/(gdept_0(jkk+1)-gdept_0(jkk)) &185 & + (zl-gdept_1d(jkk))/(gdept_1d(jkk+1)-gdept_1d(jkk)) & 186 186 & * (t_dta(ji,jj,jkk+1) - t_dta(ji,jj,jkk)) 187 187 ENDIF … … 210 210 ik = mbkt(ji,jj) 211 211 IF( ik > 1 ) THEN 212 zl = ( gdept_ 0(ik) - fsdept_0(ji,jj,ik) ) / ( gdept_0(ik) - gdept_0(ik-1) )212 zl = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 213 213 t_dta(ji,jj,ik) = (1.-zl) * t_dta(ji,jj,ik) + zl * t_dta(ji,jj,ik-1) 214 214 ENDIF -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r2905 r3839 102 102 REAL(wp) :: zue3a, zue3n, zue3b, zuf ! local scalars 103 103 REAL(wp) :: zve3a, zve3n, zve3b, zvf ! - - 104 REAL(wp) :: zec ! - -105 104 !!---------------------------------------------------------------------- 106 105 … … 235 234 ! (used as a now filtered scale factor until the swap) 236 235 ! ---------------------------------------------------- 237 DO jk = 1, jpkm1 238 fse3t_b(:,:,jk) = fse3t_n(:,:,jk) & 239 & + atfp * ( fse3t_b(:,:,jk) + fse3t_a(:,:,jk) & 240 & - 2.e0 * fse3t_n(:,:,jk) ) 241 ENDDO 236 fse3t_b(:,:,:) = fse3t_n(:,:,:) + atfp * ( fse3t_b(:,:,:) - 2.e0 * fse3t_n(:,:,:) + fse3t_a(:,:,:) ) 242 237 ! Add volume filter correction: comatibility with tracer advection scheme 243 238 ! => time filter + conservation correction (only at the first level) 244 zec = atfp * rdt / rau0 245 fse3t_b(:,:,1) = fse3t_b(:,:,1) - zec * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 246 ! swap of emp fields 247 emp_b(:,:) = emp(:,:) 239 fse3t_b(:,:,1) = fse3t_b(:,:,1) - atfp * rdt / rau0 * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 248 240 ! 249 241 IF( ln_dynadv_vec ) THEN -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
r2905 r3839 12 12 13 13 !!---------------------------------------------------------------------- 14 !! ssh_wzv : after ssh & now vertical velocity 15 !! ssh_nxt : filter ans swap the ssh arrays 14 !! ssh_nxt : after ssh 15 !! ssh_swp : filter ans swap the ssh arrays 16 !! wzv : compute now vertical velocity 16 17 !!---------------------------------------------------------------------- 17 18 USE oce ! ocean dynamics and tracers variables … … 103 104 zhdiv(:,:) = 0._wp 104 105 DO jk = 1, jpkm1 ! Horizontal divergence of barotropic transports 105 zhdiv(:,:) = zhdiv(:,:) + fse3t (:,:,jk) * hdivn(:,:,jk)106 zhdiv(:,:) = zhdiv(:,:) + fse3t_n(:,:,jk) * hdivn(:,:,jk) 106 107 END DO 107 108 ! ! Sea surface elevation time stepping … … 259 260 !!---------------------------------------------------------------------- 260 261 INTEGER, INTENT(in) :: kt ! ocean time-step index 261 !!262 REAL(wp) :: zec ! temporary scalar263 262 !!---------------------------------------------------------------------- 264 263 … … 272 271 sshn(:,:) = ssha(:,:) ! now <-- after (before already = now) 273 272 ELSE !** Leap-Frog time-stepping: Asselin filter + swap 274 IF( lk_vvl ) THEN ! before <-- now filtered 275 zec = atfp * rdt / rau0 276 sshb (:,:) = sshn (:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) & 277 & - zec * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 278 ELSE 279 sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) 280 ENDIF 273 sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) ! before <-- now filtered 274 IF( lk_vvl ) sshb(:,:) = sshb(:,:) - atfp * rdt / rau0 * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 281 275 sshn(:,:) = ssha(:,:) ! now <-- after 282 276 ENDIF -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r2715 r3839 111 111 112 112 ! vertical grid definition 113 CALL event__set_vert_axis( "deptht", gdept_ 0)114 CALL event__set_vert_axis( "depthu", gdept_ 0)115 CALL event__set_vert_axis( "depthv", gdept_ 0)116 CALL event__set_vert_axis( "depthw", gdepw_ 0)113 CALL event__set_vert_axis( "deptht", gdept_1d ) 114 CALL event__set_vert_axis( "depthu", gdept_1d ) 115 CALL event__set_vert_axis( "depthv", gdept_1d ) 116 CALL event__set_vert_axis( "depthw", gdepw_1d ) 117 117 118 118 ! automatic definitions of some of the xml attributs -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/IOM/iom_ioipsl.F90
r2715 r3839 406 406 CALL flioputv( ioipslid, 'nav_lon' , glamt(ix1:ix2, iy1:iy2) ) 407 407 CALL flioputv( ioipslid, 'nav_lat' , gphit(ix1:ix2, iy1:iy2) ) 408 CALL flioputv( ioipslid, 'nav_lev' , gdept_ 0)408 CALL flioputv( ioipslid, 'nav_lev' , gdept_1d ) 409 409 ! +++ WRONG VALUE: to be improved but not really useful... 410 410 CALL flioputv( ioipslid, 'time_counter', kt ) -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90
r2715 r3839 528 528 CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, gphit(ix1:ix2, iy1:iy2) ), clinfo) 529 529 CALL iom_nf90_check(NF90_INQ_VARID( if90id, 'nav_lev' , idmy ), clinfo) 530 CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, gdept_ 0), clinfo)530 CALL iom_nf90_check(NF90_PUT_VAR( if90id, idmy, gdept_1d ), clinfo) 531 531 ! +++ WRONG VALUE: to be improved but not really useful... 532 532 CALL iom_nf90_check(NF90_INQ_VARID( if90id, 'time_counter', idmy ), clinfo) -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90
r2715 r3839 172 172 !!---------------------------------------------------------------------- 173 173 174 zm00 = TANH( ( pdam - gdept_ 0(1 ) ) / pwam )175 zm01 = TANH( ( pdam - gdept_ 0(jpkm1) ) / pwam )174 zm00 = TANH( ( pdam - gdept_1d(1 ) ) / pwam ) 175 zm01 = TANH( ( pdam - gdept_1d(jpkm1) ) / pwam ) 176 176 zmhs = zm00 / zm01 177 177 zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 … … 213 213 !!---------------------------------------------------------------------- 214 214 215 zm00 = TANH( ( pdam - gdept_ 0(1 ) ) / pwam )216 zm01 = TANH( ( pdam - gdept_ 0(jpkm1) ) / pwam )215 zm00 = TANH( ( pdam - gdept_1d(1 ) ) / pwam ) 216 zm01 = TANH( ( pdam - gdept_1d(jpkm1) ) / pwam ) 217 217 zmhs = zm00 / zm01 218 218 zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 … … 255 255 !!---------------------------------------------------------------------- 256 256 257 zm00 = TANH( ( pdam - gdept_ 0(1 ) ) / pwam )258 zm01 = TANH( ( pdam - gdept_ 0(jpkm1) ) / pwam )257 zm00 = TANH( ( pdam - gdept_1d(1 ) ) / pwam ) 258 zm01 = TANH( ( pdam - gdept_1d(jpkm1) ) / pwam ) 259 259 zmhs = zm00 / zm01 260 260 zmhb = ( 1.e0 - pbot ) / ( 1.e0 - zmhs ) / zm01 -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90
r2715 r3839 390 390 391 391 DO jk=1, jpk 392 zcoef(jk) = 1.0_wp + NINT(9.0_wp*(gdept_ 0(jk)-800.0_wp)/(3000.0_wp-800.0_wp))392 zcoef(jk) = 1.0_wp + NINT(9.0_wp*(gdept_1d(jk)-800.0_wp)/(3000.0_wp-800.0_wp)) 393 393 zcoef(jk) = MIN(10.0_wp, MAX(1.0_wp, zcoef(jk))) 394 394 IF(lwp) WRITE(numout,'(4x,i3,6x,f7.3)') jk,zcoef(jk) -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r2733 r3839 1006 1006 USE dom_oce, ONLY : & ! Ocean space and time domain variables 1007 1007 & rdt, & 1008 & gdept_ 0,&1008 & gdept_1d, & 1009 1009 & tmask, umask, vmask 1010 1010 USE phycst, ONLY : & ! Physical constants … … 1068 1068 CALL obs_pro_opt( prodatqc(jprofset), & 1069 1069 & kstp, jpi, jpj, jpk, nit000, idaystp, tn, sn,& 1070 & gdept_ 0, tmask, n1dint, n2dint,&1070 & gdept_1d, tmask, n1dint, n2dint, & 1071 1071 & kdailyavtypes = endailyavtypes ) 1072 1072 ELSE 1073 1073 CALL obs_pro_opt( prodatqc(jprofset), & 1074 1074 & kstp, jpi, jpj, jpk, nit000, idaystp, tn, sn,& 1075 & gdept_ 0, tmask, n1dint, n2dint)1075 & gdept_1d, tmask, n1dint, n2dint ) 1076 1076 ENDIF 1077 1077 END DO … … 1116 1116 ! zonal component of velocity 1117 1117 CALL obs_vel_opt( veldatqc(jveloset), kstp, jpi, jpj, jpk, & 1118 & nit000, idaystp, un, vn, gdept_ 0, umask, vmask, &1118 & nit000, idaystp, un, vn, gdept_1d, umask, vmask, & 1119 1119 n1dint, n2dint, ld_velav(jveloset) ) 1120 1120 END DO -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/OBS/obs_prep.F90
r2715 r3839 73 73 USE par_oce ! Ocean parameters 74 74 USE dom_oce, ONLY : & ! Geographical information 75 & glamt, &76 & gphit, &77 & gdept_ 0, &78 & tmask, &75 & glamt, & 76 & gphit, & 77 & gdept_1d, & 78 & tmask, & 79 79 & nproc 80 80 !! * Arguments … … 193 193 & profdata%var(1)%vdep, & 194 194 & glamt, gphit, & 195 & gdept_ 0,tmask, &195 & gdept_1d, tmask, & 196 196 & profdata%nqc, profdata%var(1)%nvqc, & 197 197 & iosdtobs, ilantobs, & … … 213 213 & profdata%var(2)%vdep, & 214 214 & glamt, gphit, & 215 & gdept_ 0,tmask, &215 & gdept_1d, tmask, & 216 216 & profdata%nqc, profdata%var(2)%nvqc, & 217 217 & iosdsobs, ilansobs, & … … 916 916 & glamt, glamu, glamv, & 917 917 & gphit, gphiu, gphiv, & 918 & gdept_ 0, &918 & gdept_1d, & 919 919 & tmask, umask, vmask, & 920 920 & nproc … … 1032 1032 & profdata%var(1)%vdep, & 1033 1033 & glamu, gphiu, & 1034 & gdept_ 0,umask, &1034 & gdept_1d, umask, & 1035 1035 & profdata%nqc, profdata%var(1)%nvqc, & 1036 1036 & iosduobs, ilanuobs, & … … 1052 1052 & profdata%var(2)%vdep, & 1053 1053 & glamv, gphiv, & 1054 & gdept_ 0,vmask, &1054 & gdept_1d, vmask, & 1055 1055 & profdata%nqc, profdata%var(2)%nvqc, & 1056 1056 & iosdvobs, ilanvobs, & … … 1709 1709 !! * Modules used 1710 1710 USE dom_oce, ONLY : & ! Geographical information 1711 & gdepw_ 01711 & gdepw_1d 1712 1712 1713 1713 !! * Arguments … … 1826 1826 & .OR. ( pobsphi(jobs) > 90. ) & 1827 1827 & .OR. ( pobsdep(jobsp) < 0.0 ) & 1828 & .OR. ( pobsdep(jobsp) > gdepw_ 0(kpk) ) ) THEN1828 & .OR. ( pobsdep(jobsp) > gdepw_1d(kpk) ) ) THEN 1829 1829 kobsqc(jobsp) = kobsqc(jobsp) + 11 1830 1830 kosdobs = kosdobs + 1 -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_prof.F90
r2715 r3839 793 793 !----------------------------------------------------------------------- 794 794 IF ( ldt3d ) THEN 795 CALL obs_level_search( jpk, gdept_ 0, &795 CALL obs_level_search( jpk, gdept_1d, & 796 796 & profdata%nvprot(1), profdata%var(1)%vdep, & 797 797 & profdata%var(1)%mvk ) 798 798 ENDIF 799 799 IF ( lds3d ) THEN 800 CALL obs_level_search( jpk, gdept_ 0, &800 CALL obs_level_search( jpk, gdept_1d, & 801 801 & profdata%nvprot(2), profdata%var(2)%vdep, & 802 802 & profdata%var(2)%mvk ) -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_vel.F90
r2715 r3839 614 614 ! Model level search 615 615 !----------------------------------------------------------------------- 616 CALL obs_level_search( jpk, gdept_ 0, &616 CALL obs_level_search( jpk, gdept_1d, & 617 617 & profdata%nvprot(1), profdata%var(1)%vdep, & 618 618 & profdata%var(1)%mvk ) 619 CALL obs_level_search( jpk, gdept_ 0, &619 CALL obs_level_search( jpk, gdept_1d, & 620 620 & profdata%nvprot(2), profdata%var(2)%vdep, & 621 621 & profdata%var(2)%mvk ) -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r2715 r3839 393 393 IF( rn_hrnf > 0._wp ) THEN 394 394 nkrnf = 2 395 DO WHILE( nkrnf /= jpkm1 .AND. gdepw_ 0(nkrnf+1) < rn_hrnf ) ; nkrnf = nkrnf + 1 ; END DO395 DO WHILE( nkrnf /= jpkm1 .AND. gdepw_1d(nkrnf+1) < rn_hrnf ) ; nkrnf = nkrnf + 1 ; END DO 396 396 IF( ln_sco ) & 397 397 CALL ctl_warn( 'sbc_rnf: number of levels over which Kz is increased is computed for zco...' ) -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90
r2715 r3839 406 406 ztb (ji,jj) = tsb(ji,jj,ik,jp_tem) * tmask(ji,jj,1) ! bottom before T and S 407 407 zsb (ji,jj) = tsb(ji,jj,ik,jp_sal) * tmask(ji,jj,1) 408 zdep(ji,jj) = fsdept_0(ji,jj,ik)! bottom T-level reference depth408 zdep(ji,jj) = gdept_0(ji,jj,ik) ! bottom T-level reference depth 409 409 ! 410 410 zub(ji,jj) = un(ji,jj,mbku(ji,jj)) ! bottom velocity … … 594 594 DO jj = 1, jpjm1 595 595 DO ji = 1, jpim1 596 mgrhu(ji,jj) = INT( SIGN( 1.e0, fsdept_0(ji+1,jj,mbkt(ji+1,jj)) - fsdept_0(ji,jj,mbkt(ji,jj)) ) )597 mgrhv(ji,jj) = INT( SIGN( 1.e0, fsdept_0(ji,jj+1,mbkt(ji,jj+1)) - fsdept_0(ji,jj,mbkt(ji,jj)) ) )596 mgrhu(ji,jj) = INT( SIGN( 1.e0, gdept_0(ji+1,jj,mbkt(ji+1,jj)) - gdept_0(ji,jj,mbkt(ji,jj)) ) ) 597 mgrhv(ji,jj) = INT( SIGN( 1.e0, gdept_0(ji,jj+1,mbkt(ji,jj+1)) - gdept_0(ji,jj,mbkt(ji,jj)) ) ) 598 598 END DO 599 599 END DO … … 601 601 DO jj = 1, jpjm1 !* bbl thickness at u- (v-) point 602 602 DO ji = 1, jpim1 ! minimum of top & bottom e3u_0 (e3v_0) 603 e3u_bbl_0(ji,jj) = MIN( fse3u_0(ji,jj,mbkt(ji+1,jj )), fse3u_0(ji,jj,mbkt(ji,jj)) )604 e3v_bbl_0(ji,jj) = MIN( fse3v_0(ji,jj,mbkt(ji ,jj+1)), fse3v_0(ji,jj,mbkt(ji,jj)) )603 e3u_bbl_0(ji,jj) = MIN( e3u_0(ji,jj,mbkt(ji+1,jj )), e3u_0(ji,jj,mbkt(ji,jj)) ) 604 e3v_bbl_0(ji,jj) = MIN( e3v_0(ji,jj,mbkt(ji ,jj+1)), e3v_0(ji,jj,mbkt(ji,jj)) ) 605 605 END DO 606 606 END DO -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90
r2715 r3839 738 738 clname = 'dist.coast' 739 739 itime = 0 740 CALL ymds2ju( 0 , 1 , 1 , 0._wp , zdate0 )741 CALL restini( 'NONE', jpi , jpj , glamt, gphit , &742 & jpk , gdept_ 0, clname, itime, zdate0, &743 & rdt , icot )740 CALL ymds2ju( 0 , 1 , 1 , 0._wp , zdate0 ) 741 CALL restini( 'NONE', jpi , jpj , glamt, gphit , & 742 & jpk , gdept_1d, clname, itime, zdate0, & 743 & rdt , icot ) 744 744 CALL restput( icot, 'Tcoast', jpi, jpj, jpk, 0, pdct ) 745 745 CALL restclo( icot ) -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
r2970 r3839 319 319 IF( ll_tra ) ztc_f = ztc_f - zfact1 * ( sbc_tsc(ji,jj,jn) - sbc_tsc_b(ji,jj,jn) ) ! only T and S 320 320 ENDIF 321 IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr ) &! solar penetration (temperature only)322 & ztc_f = ztc_f - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) )323 321 IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr ) THEN ! solar penetration (temperature only) 322 ztc_f = ztc_f - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) ) 323 ENDIF 324 324 ze3t_f = 1.e0 / ze3t_f 325 325 ptb(ji,jj,jk,jn) = ztc_f * ze3t_f ! ptb <-- ptn filtered -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r2715 r3839 403 403 ENDIF 404 404 405 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksr, ' ref depth = ', gdepw_ 0(nksr+1), ' m'405 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksr, ' ref depth = ', gdepw_1d(nksr+1), ' m' 406 406 ! 407 407 IF( nn_chldta == 1 ) THEN !* Chl data : set sf_chl structure … … 444 444 !CDIR NOVERRCHK 445 445 DO ji = 1, jpi 446 zc0 = ze0(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * xsi0r )447 zc1 = ze1(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * zekb(ji,jj) )448 zc2 = ze2(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * zekg(ji,jj) )449 zc3 = ze3(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * zekr(ji,jj) )446 zc0 = ze0(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * xsi0r ) 447 zc1 = ze1(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * zekb(ji,jj) ) 448 zc2 = ze2(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * zekg(ji,jj) ) 449 zc3 = ze3(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * zekr(ji,jj) ) 450 450 ze0(ji,jj,jk) = zc0 451 451 ze1(ji,jj,jk) = zc1 … … 473 473 IF(lwp) THEN 474 474 WRITE(numout,*) 475 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksr, ' ref depth = ', gdepw_ 0(nksr+1), ' m'475 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksr, ' ref depth = ', gdepw_1d(nksr+1), ' m' 476 476 ENDIF 477 477 ! -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90
r2715 r3839 148 148 ELSE ! Background profile of avt (fit a theoretical/observational profile (Krauss 1990) 149 149 avmb(:) = rn_avm0 150 avtb(:) = rn_avt0 + ( 3.e-4_wp - 2._wp * rn_avt0 ) * 1.e-4_wp * gdepw_ 0(:) ! m2/s150 avtb(:) = rn_avt0 + ( 3.e-4_wp - 2._wp * rn_avt0 ) * 1.e-4_wp * gdepw_1d(:) ! m2/s 151 151 IF(ln_sco .AND. lwp) CALL ctl_warn( 'avtb profile not valid in sco' ) 152 152 ENDIF -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r2715 r3839 142 142 IF( ln_dyninc ) THEN 143 143 CALL dyn_asm_inc( nit000 - 1 ) ! Dynamics 144 IF ( ln_asmdin ) CALL ssh_wzv ( nit000 - 1 ) ! update vertical velocity144 IF ( ln_asmdin ) CALL wzv ( nit000 - 1 ) ! update vertical velocity 145 145 ENDIF 146 146 IF( ln_sshinc ) CALL ssh_asm_inc( nit000 - 1 ) ! SSH -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/step.F90
r2996 r3839 146 146 ! 147 147 IF( lk_ldfslp ) THEN ! slope of lateral mixing 148 CALL eos( tsb, rhd, fsdept_0(:,:,:) )! before in situ density148 CALL eos( tsb, rhd, gdept_0(:,:,:) ) ! before in situ density 149 149 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsb, gtsu, gtsv, & ! Partial steps: before horizontal gradient 150 150 & rhd, gru , grv ) ! of t, s, rd at the last ocean level -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r2905 r3839 56 56 USE bdydta ! unstructured open boundary data (bdy_dta routine) 57 57 58 USE sshwzv ! vertical velocity and ssh (ssh_wzv routine) 58 USE sshwzv ! vertical velocity and ssh (ssh_nxt routine) 59 ! (ssh_swp routine) 60 ! (wzv routine) 59 61 USE domvvl ! variable vertical scale factors (dom_vvl_sf_nxt routine) 60 62 ! (dom_vvl_sf_swp routine) -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zopt.F90
r2715 r3839 245 245 nksrp = trc_oce_ext_lev( r_si2, 0.33e2 ) ! max level of light extinction (Blue Chl=0.01) 246 246 ! 247 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksrp, ' ref depth = ', gdepw_ 0(nksrp+1), ' m'247 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksrp, ' ref depth = ', gdepw_1d(nksrp+1), ' m' 248 248 ! 249 249 etot (:,:,:) = 0._wp -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/SED/sed.F90
r2528 r3839 16 16 glamt => glamt , & !: longitude of t-point (degre) 17 17 gphit => gphit , & !: latitude of t-point (degre) 18 e3t_ 0 => e3t_0, & !: reference depth of t-points (m)18 e3t_1d => e3t_1d , & !: reference depth of t-points (m) 19 19 mbkt => mbkt , & !: vertical index of the bottom last T- ocean level 20 20 tmask => tmask , & !: land/ocean mask at t-points -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/SED/sedini.F90
r2715 r3839 135 135 DO ji = 1, jpi 136 136 ikt = mbkt(ji,jj) 137 IF( tmask(ji,jj,ikt) == 1 ) epkbot(ji,jj) = e3t_ 0(ikt)137 IF( tmask(ji,jj,ikt) == 1 ) epkbot(ji,jj) = e3t_1d(ikt) 138 138 ENDDO 139 139 ENDDO -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90
r2715 r3839 104 104 105 105 !* vertical mesh * 106 USE dom_oce , ONLY : gdept_0 => gdept_0 !: reference depth of t-points (m) 107 USE dom_oce , ONLY : e3t_0 => e3t_0 !: reference depth of t-points (m) 108 USE dom_oce , ONLY : e3w_0 => e3w_0 !: reference depth of w-points (m) 109 USE dom_oce , ONLY : gdepw_0 => gdepw_0 !: reference depth of w-points (m) 110 # if ! defined key_zco 111 USE dom_oce , ONLY : gdep3w => gdep3w !: ??? 112 USE dom_oce , ONLY : gdept => gdept !: depth of t-points (m) 113 USE dom_oce , ONLY : gdepw => gdepw !: depth of t-points (m) 114 USE dom_oce , ONLY : e3t => e3t !: vertical scale factors at t- 115 USE dom_oce , ONLY : e3u => e3u !: vertical scale factors at u- 116 USE dom_oce , ONLY : e3v => e3v !: vertical scale factors v- 117 USE dom_oce , ONLY : e3w => e3w !: w-points (m) 118 USE dom_oce , ONLY : e3f => e3f !: f-points (m) 119 USE dom_oce , ONLY : e3uw => e3uw !: uw-points (m) 120 USE dom_oce , ONLY : e3vw => e3vw !: vw-points (m) 121 # endif 106 USE dom_oce , ONLY : gdept_1d => gdept_1d !: reference depth of t-points (m) 107 USE dom_oce , ONLY : e3t_1d => e3t_1d !: reference depth of t-points (m) 108 USE dom_oce , ONLY : e3w_1d => e3w_1d !: reference depth of w-points (m) 109 USE dom_oce , ONLY : gdepw_1d => gdepw_1d !: reference depth of w-points (m) 110 122 111 USE dom_oce , ONLY : ln_zps => ln_zps !: partial steps flag 123 112 USE dom_oce , ONLY : ln_sco => ln_sco !: s-coordinate flag -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/trcdia.F90
r2715 r3839 174 174 175 175 ! Vertical grid for tracer : gdept 176 CALL histvert( nit5, 'deptht', 'Vertical T levels', 'm', ipk, gdept_ 0, ndepit5)176 CALL histvert( nit5, 'deptht', 'Vertical T levels', 'm', ipk, gdept_1d, ndepit5) 177 177 178 178 ! Index of ocean points in 3D and 2D (surface) … … 301 301 ! Vertical grid for 2d and 3d arrays 302 302 303 CALL histvert( nitd, 'deptht', 'Vertical T levels','m', ipk, gdept_ 0, ndepitd)303 CALL histvert( nitd, 'deptht', 'Vertical T levels','m', ipk, gdept_1d, ndepitd) 304 304 305 305 ! Declare all the output fields as NETCDF variables … … 444 444 & iiter, zjulian, zdt, nhoritb, nitb , domain_id=nidom, snc4chunks=snc4set ) 445 445 ! Vertical grid for biological trends 446 CALL histvert(nitb, 'deptht', 'Vertical T levels', 'm', ipk, gdept_ 0, ndepitb)446 CALL histvert(nitb, 'deptht', 'Vertical T levels', 'm', ipk, gdept_1d, ndepitb) 447 447 448 448 ! Declare all the output fields as NETCDF variables -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/TOP_SRC/trcdta.F90
r2715 r3839 141 141 ik = mbkt(ji,jj) 142 142 IF( ik > 2 ) THEN 143 zl = ( gdept_ 0(ik) - fsdept_0(ji,jj,ik) ) / ( gdept_0(ik) - gdept_0(ik-1) )143 zl = ( gdept_1d(ik) - gdept_1d(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 144 144 tracdta(ji,jj,ik,jn,jl) = (1.-zl) * tracdta(ji,jj,ik ,jn,jl) & 145 145 & + zl * tracdta(ji,jj,ik-1,jn,jl)
Note: See TracChangeset
for help on using the changeset viewer.