- Timestamp:
- 2020-05-14T21:46:00+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Files:
-
- 1 deleted
- 7 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Property svn:externals
-
old new 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/USR/usrdef_fmask.F90
r10425 r12928 26 26 PUBLIC usr_def_fmask ! routine called by dommsk.F90 27 27 28 !! * Substitutions29 # include "vectopt_loop_substitute.h90"30 28 !!---------------------------------------------------------------------- 31 29 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/USR/usrdef_hgr.F90
r10069 r12928 26 26 PUBLIC usr_def_hgr ! called in domhgr.F90 27 27 28 !! * Substitutions 29 # include "do_loop_substitute.h90" 28 30 !!---------------------------------------------------------------------- 29 31 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 105 107 IF( ln_bench ) THEN ! benchmark: forced the resolution to be 106 km 106 108 ze1 = 106000._wp ! but keep (lat,lon) at the right nn_GYRE resolution 107 CALL ctl_warn( ' GYRE used as Benchmark: e1=e2=106km, no need to adjust r dt, ahm,aht ' )109 CALL ctl_warn( ' GYRE used as Benchmark: e1=e2=106km, no need to adjust rn_Dt, ahm,aht ' ) 108 110 ENDIF 109 111 IF( nprint==1 .AND. lwp ) THEN … … 112 114 ENDIF 113 115 ! 114 DO jj = 1, jpj 115 DO ji = 1, jpi 116 zim1 = REAL( ji + nimpp - 1 ) - 1. ; zim05 = REAL( ji + nimpp - 1 ) - 1.5 117 zjm1 = REAL( jj + njmpp - 1 ) - 1. ; zjm05 = REAL( jj + njmpp - 1 ) - 1.5 118 ! 119 !glamt(i,j) longitude at T-point 120 !gphit(i,j) latitude at T-point 121 plamt(ji,jj) = zlam0 + zim05 * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 122 pphit(ji,jj) = zphi0 - zim05 * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 123 ! 124 !glamu(i,j) longitude at U-point 125 !gphiu(i,j) latitude at U-point 126 plamu(ji,jj) = zlam0 + zim1 * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 127 pphiu(ji,jj) = zphi0 - zim1 * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 128 ! 129 !glamv(i,j) longitude at V-point 130 !gphiv(i,j) latitude at V-point 131 plamv(ji,jj) = zlam0 + zim05 * ze1deg * zcos_alpha + zjm1 * ze1deg * zsin_alpha 132 pphiv(ji,jj) = zphi0 - zim05 * ze1deg * zsin_alpha + zjm1 * ze1deg * zcos_alpha 133 ! 134 !glamf(i,j) longitude at F-point 135 !gphif(i,j) latitude at F-point 136 plamf(ji,jj) = zlam0 + zim1 * ze1deg * zcos_alpha + zjm1 * ze1deg * zsin_alpha 137 pphif(ji,jj) = zphi0 - zim1 * ze1deg * zsin_alpha + zjm1 * ze1deg * zcos_alpha 138 END DO 139 END DO 116 DO_2D_11_11 117 zim1 = REAL( ji + nimpp - 1 ) - 1. ; zim05 = REAL( ji + nimpp - 1 ) - 1.5 118 zjm1 = REAL( jj + njmpp - 1 ) - 1. ; zjm05 = REAL( jj + njmpp - 1 ) - 1.5 119 ! 120 !glamt(i,j) longitude at T-point 121 !gphit(i,j) latitude at T-point 122 plamt(ji,jj) = zlam0 + zim05 * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 123 pphit(ji,jj) = zphi0 - zim05 * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 124 ! 125 !glamu(i,j) longitude at U-point 126 !gphiu(i,j) latitude at U-point 127 plamu(ji,jj) = zlam0 + zim1 * ze1deg * zcos_alpha + zjm05 * ze1deg * zsin_alpha 128 pphiu(ji,jj) = zphi0 - zim1 * ze1deg * zsin_alpha + zjm05 * ze1deg * zcos_alpha 129 ! 130 !glamv(i,j) longitude at V-point 131 !gphiv(i,j) latitude at V-point 132 plamv(ji,jj) = zlam0 + zim05 * ze1deg * zcos_alpha + zjm1 * ze1deg * zsin_alpha 133 pphiv(ji,jj) = zphi0 - zim05 * ze1deg * zsin_alpha + zjm1 * ze1deg * zcos_alpha 134 ! 135 !glamf(i,j) longitude at F-point 136 !gphif(i,j) latitude at F-point 137 plamf(ji,jj) = zlam0 + zim1 * ze1deg * zcos_alpha + zjm1 * ze1deg * zsin_alpha 138 pphif(ji,jj) = zphi0 - zim1 * ze1deg * zsin_alpha + zjm1 * ze1deg * zcos_alpha 139 END_2D 140 140 ! 141 141 ! !== Horizontal scale factors ==! (in meters) -
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/USR/usrdef_istate.F90
r10069 r12928 24 24 PUBLIC usr_def_istate ! called in istate.F90 25 25 26 !! * Substitutions 27 # include "do_loop_substitute.h90" 26 28 !!---------------------------------------------------------------------- 27 29 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 59 61 pssh(:,:) = 0._wp 60 62 ! 61 DO jk = 1, jpk ! horizontally uniform T & S profiles 62 DO jj = 1, jpj 63 DO ji = 1, jpi 64 pts(ji,jj,jk,jp_tem) = ( ( 16. - 12. * TANH( (pdept(ji,jj,jk) - 400) / 700 ) ) & 65 & * (-TANH( (500. - pdept(ji,jj,jk)) / 150. ) + 1.) / 2. & 66 & + ( 15. * ( 1. - TANH( (pdept(ji,jj,jk)-50.) / 1500.) ) & 67 & - 1.4 * TANH((pdept(ji,jj,jk)-100.) / 100.) & 68 & + 7. * (1500. - pdept(ji,jj,jk) ) / 1500.) & 69 & * (-TANH( (pdept(ji,jj,jk) - 500.) / 150.) + 1.) / 2. ) * ptmask(ji,jj,jk) 63 DO_3D_11_11( 1, jpk ) 64 pts(ji,jj,jk,jp_tem) = ( ( 16. - 12. * TANH( (pdept(ji,jj,jk) - 400) / 700 ) ) & 65 & * (-TANH( (500. - pdept(ji,jj,jk)) / 150. ) + 1.) / 2. & 66 & + ( 15. * ( 1. - TANH( (pdept(ji,jj,jk)-50.) / 1500.) ) & 67 & - 1.4 * TANH((pdept(ji,jj,jk)-100.) / 100.) & 68 & + 7. * (1500. - pdept(ji,jj,jk) ) / 1500.) & 69 & * (-TANH( (pdept(ji,jj,jk) - 500.) / 150.) + 1.) / 2. ) * ptmask(ji,jj,jk) 70 70 71 pts(ji,jj,jk,jp_sal) = ( ( 36.25 - 1.13 * TANH( (pdept(ji,jj,jk) - 305) / 460 ) ) & 72 & * (-TANH((500. - pdept(ji,jj,jk)) / 150.) + 1.) / 2 & 73 & + ( 35.55 + 1.25 * (5000. - pdept(ji,jj,jk)) / 5000. & 74 & - 1.62 * TANH( (pdept(ji,jj,jk) - 60. ) / 650. ) & 75 & + 0.2 * TANH( (pdept(ji,jj,jk) - 35. ) / 100. ) & 76 & + 0.2 * TANH( (pdept(ji,jj,jk) - 1000.) / 5000.) ) & 77 & * (-TANH( (pdept(ji,jj,jk) - 500.) / 150.) + 1.) / 2 ) * ptmask(ji,jj,jk) 78 END DO 79 END DO 80 END DO 71 pts(ji,jj,jk,jp_sal) = ( ( 36.25 - 1.13 * TANH( (pdept(ji,jj,jk) - 305) / 460 ) ) & 72 & * (-TANH((500. - pdept(ji,jj,jk)) / 150.) + 1.) / 2 & 73 & + ( 35.55 + 1.25 * (5000. - pdept(ji,jj,jk)) / 5000. & 74 & - 1.62 * TANH( (pdept(ji,jj,jk) - 60. ) / 650. ) & 75 & + 0.2 * TANH( (pdept(ji,jj,jk) - 35. ) / 100. ) & 76 & + 0.2 * TANH( (pdept(ji,jj,jk) - 1000.) / 5000.) ) & 77 & * (-TANH( (pdept(ji,jj,jk) - 500.) / 150.) + 1.) / 2 ) * ptmask(ji,jj,jk) 78 END_3D 81 79 ! 82 80 END SUBROUTINE usr_def_istate -
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/USR/usrdef_nam.F90
r12178 r12928 59 59 !!---------------------------------------------------------------------- 60 60 ! 61 REWIND( numnam_cfg ) ! Namelist namusr_def (exist in namelist_cfg only)62 61 READ ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 ) 63 62 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namusr_def in configuration namelist' ) -
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/USR/usrdef_sbc.F90
r10425 r12928 31 31 32 32 !! * Substitutions 33 # include " vectopt_loop_substitute.h90"33 # include "do_loop_substitute.h90" 34 34 !!---------------------------------------------------------------------- 35 35 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 39 39 CONTAINS 40 40 41 SUBROUTINE usrdef_sbc_oce( kt )41 SUBROUTINE usrdef_sbc_oce( kt, Kbb ) 42 42 !!--------------------------------------------------------------------- 43 43 !! *** ROUTINE usrdef_sbc *** … … 55 55 !!---------------------------------------------------------------------- 56 56 INTEGER, INTENT(in) :: kt ! ocean time step 57 INTEGER, INTENT(in) :: Kbb ! ocean time index 57 58 !! 58 59 INTEGER :: ji, jj ! dummy loop indices … … 88 89 89 90 ! current day (in hours) since january the 1st of the current year 90 ztime = REAL( kt ) * r dt / (rmmss * rhhmm) & ! total incrementation (in hours)91 ztime = REAL( kt ) * rn_Dt / (rmmss * rhhmm) & ! total incrementation (in hours) 91 92 & - (nyear - 1) * rjjhh * zyydd ! minus years since beginning of experiment (in hours) 92 93 … … 109 110 ztrp= - 40.e0 ! retroaction term on heat fluxes (W/m2/K) 110 111 zconv = 3.16e-5 ! convertion factor: 1 m/yr => 3.16e-5 mm/s 111 DO jj = 1, jpj 112 DO ji = 1, jpi 113 ! domain from 15 deg to 50 deg between 27 and 28 degC at 15N, -3 114 ! and 13 degC at 50N 53.5 + or - 11 = 1/4 period : 115 ! 64.5 in summer, 42.5 in winter 116 t_star = zTstar * ( 1. + 1. / 50. * zcos_sais2 ) & 117 & * COS( rpi * (gphit(ji,jj) - 5.) & 118 & / ( 53.5 * ( 1 + 11 / 53.5 * zcos_sais2 ) * 2.) ) 119 ! 23.5 deg : tropics 120 qsr (ji,jj) = 230 * COS( 3.1415 * ( gphit(ji,jj) - 23.5 * zcos_sais1 ) / ( 0.9 * 180 ) ) 121 qns (ji,jj) = ztrp * ( tsb(ji,jj,1,jp_tem) - t_star ) - qsr(ji,jj) 122 IF( gphit(ji,jj) >= 14.845 .AND. 37.2 >= gphit(ji,jj) ) THEN ! zero at 37.8 deg, max at 24.6 deg 123 emp (ji,jj) = zemp_S * zconv & 124 & * SIN( rpi / 2 * (gphit(ji,jj) - 37.2) / (24.6 - 37.2) ) & 125 & * ( 1 - zemp_sais / zemp_S * zcos_sais1) 126 ELSE 127 emp (ji,jj) = - zemp_N * zconv & 128 & * SIN( rpi / 2 * (gphit(ji,jj) - 37.2) / (46.8 - 37.2) ) & 129 & * ( 1 - zemp_sais / zemp_N * zcos_sais1 ) 130 ENDIF 131 END DO 132 END DO 112 DO_2D_11_11 113 ! domain from 15 deg to 50 deg between 27 and 28 degC at 15N, -3 114 ! and 13 degC at 50N 53.5 + or - 11 = 1/4 period : 115 ! 64.5 in summer, 42.5 in winter 116 t_star = zTstar * ( 1. + 1. / 50. * zcos_sais2 ) & 117 & * COS( rpi * (gphit(ji,jj) - 5.) & 118 & / ( 53.5 * ( 1 + 11 / 53.5 * zcos_sais2 ) * 2.) ) 119 ! 23.5 deg : tropics 120 qsr (ji,jj) = 230 * COS( 3.1415 * ( gphit(ji,jj) - 23.5 * zcos_sais1 ) / ( 0.9 * 180 ) ) 121 qns (ji,jj) = ztrp * ( ts(ji,jj,1,jp_tem,Kbb) - t_star ) - qsr(ji,jj) 122 IF( gphit(ji,jj) >= 14.845 .AND. 37.2 >= gphit(ji,jj) ) THEN ! zero at 37.8 deg, max at 24.6 deg 123 emp (ji,jj) = zemp_S * zconv & 124 & * SIN( rpi / 2 * (gphit(ji,jj) - 37.2) / (24.6 - 37.2) ) & 125 & * ( 1 - zemp_sais / zemp_S * zcos_sais1) 126 ELSE 127 emp (ji,jj) = - zemp_N * zconv & 128 & * SIN( rpi / 2 * (gphit(ji,jj) - 37.2) / (46.8 - 37.2) ) & 129 & * ( 1 - zemp_sais / zemp_N * zcos_sais1 ) 130 ENDIF 131 END_2D 133 132 134 133 zsumemp = GLOB_SUM( 'usrdef_sbc', emp (:,:) ) … … 155 154 !accumulates days of previous months of this year 156 155 ! day (in hours) since january the 1st 157 ztime = FLOAT( kt ) * r dt / (rmmss * rhhmm) & ! incrementation in hour156 ztime = FLOAT( kt ) * rn_Dt / (rmmss * rhhmm) & ! incrementation in hour 158 157 & - (nyear - 1) * rjjhh * zyydd ! - nber of hours the precedent years 159 158 ztimemax = ((5.*30.)+21.)* 24. ! 21th june in hours … … 166 165 ztau_sais = 0.015 167 166 ztaun = ztau - ztau_sais * COS( (ztime - ztimemax) / (ztimemin - ztimemax) * rpi ) 168 DO jj = 1, jpj 169 DO ji = 1, jpi 170 ! domain from 15deg to 50deg and 1/2 period along 14deg 171 ! so 5/4 of half period with seasonal cycle 172 utau(ji,jj) = - ztaun * SIN( rpi * (gphiu(ji,jj) - 15.) / (29.-15.) ) 173 vtau(ji,jj) = ztaun * SIN( rpi * (gphiv(ji,jj) - 15.) / (29.-15.) ) 174 END DO 175 END DO 167 DO_2D_11_11 168 ! domain from 15deg to 50deg and 1/2 period along 14deg 169 ! so 5/4 of half period with seasonal cycle 170 utau(ji,jj) = - ztaun * SIN( rpi * (gphiu(ji,jj) - 15.) / (29.-15.) ) 171 vtau(ji,jj) = ztaun * SIN( rpi * (gphiv(ji,jj) - 15.) / (29.-15.) ) 172 END_2D 176 173 177 174 ! module of wind stress and wind speed at T-point 178 175 zcoef = 1. / ( zrhoa * zcdrag ) 179 DO jj = 2, jpjm1 180 DO ji = fs_2, fs_jpim1 ! vect. opt. 181 ztx = utau(ji-1,jj ) + utau(ji,jj) 182 zty = vtau(ji ,jj-1) + vtau(ji,jj) 183 zmod = 0.5 * SQRT( ztx * ztx + zty * zty ) 184 taum(ji,jj) = zmod 185 wndm(ji,jj) = SQRT( zmod * zcoef ) 186 END DO 187 END DO 176 DO_2D_00_00 177 ztx = utau(ji-1,jj ) + utau(ji,jj) 178 zty = vtau(ji ,jj-1) + vtau(ji,jj) 179 zmod = 0.5 * SQRT( ztx * ztx + zty * zty ) 180 taum(ji,jj) = zmod 181 wndm(ji,jj) = SQRT( zmod * zcoef ) 182 END_2D 188 183 CALL lbc_lnk_multi( 'usrdef_sbc', taum(:,:), 'T', 1. , wndm(:,:), 'T', 1. ) 189 184 -
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/USR/usrdef_zgr.F90
r10425 r12928 29 29 PUBLIC usr_def_zgr ! called by domzgr.F90 30 30 31 !! * Substitutions32 # include "vectopt_loop_substitute.h90"33 31 !!---------------------------------------------------------------------- 34 32 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 204 202 CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. ) ! set surrounding land to zero (here jperio=0 ==>> closed) 205 203 ! 206 k_bot(:,:) = NINT( z2d(:,:) ) 204 k_bot(:,:) = NINT( z2d(:,:) ) ! =jpkm1 over the ocean point, =0 elsewhere 207 205 ! 208 206 k_top(:,:) = MIN( 1 , k_bot(:,:) ) ! = 1 over the ocean point, =0 elsewhere
Note: See TracChangeset
for help on using the changeset viewer.