Changeset 6900
- Timestamp:
- 2016-08-29T17:55:22+02:00 (8 years ago)
- Location:
- branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM
- Files:
-
- 2 deleted
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/OVERFLOW/EXP00/namelist_cfg
r6895 r6900 2 2 !! NEMO/OPA Configuration namelist : used to overwrite defaults values defined in SHARED/namelist_ref 3 3 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4 ! 4 !----------------------------------------------------------------------- 5 &namusr_def ! GYRE user defined namelist 6 !----------------------------------------------------------------------- 7 ln_zco = .true. ! z-coordinate flag 8 ln_zps = .false. ! z-partial-step coordinate flag 9 ln_sco = .false. ! s-coordinate flag 10 rn_dx = 100. ! horizontal resolution in meters 11 rn_dz = 20. ! vertical resolution in meters 12 jperio = 0 ! OVERFLOW configuration : lateral cond. type = closed 13 / 5 14 !----------------------------------------------------------------------- 6 15 &namrun ! parameters of the run -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/OVERFLOW/MY_SRC/usrdef_hgr.F90
r6895 r6900 2 2 !!============================================================================== 3 3 !! *** MODULE usrdef_hgr *** 4 !! User defined module: used like example to define domain, init, sbc, ... 4 !! 5 !! === OVERFLOW configuration === 6 !! 7 !! User defined : horizontal mesh 5 8 !!============================================================================== 6 !! History : NEMO ! 2016-03 (S. Flavoni)9 !! History : NEMO ! 2016-08 (S. Flavoni, G. Madec) Original code 7 10 !!---------------------------------------------------------------------- 8 11 9 12 !!---------------------------------------------------------------------- 10 !! usr_def_hgr : initialize the horizontal mesh13 !! usr_def_hgr : initialize the horizontal mesh for OVERFLOW configuration 11 14 !!---------------------------------------------------------------------- 12 USE dom_oce , ONLY: nimpp, njmpp ! ocean space and time domain13 USE par_oce ! ocean space and time domain14 USE phycst ! physical constants15 USE usrdef_nam !15 USE dom_oce , ONLY: nimpp, njmpp ! ocean space and time domain 16 USE par_oce ! ocean space and time domain 17 USE phycst ! physical constants 18 USE usrdef_nam, ONLY: rn_dx ! horizontal resolution in meters 16 19 ! 17 USE in_out_manager ! I/O manager18 USE lib_mpp ! MPP library19 USE timing ! Timing20 USE in_out_manager ! I/O manager 21 USE lib_mpp ! MPP library 22 USE timing ! Timing 20 23 21 24 IMPLICIT NONE … … 43 46 !! 44 47 !! ** Method : set all intent(out) argument to a proper value 45 !! 46 !! Here OVERFLOW configuration : 47 !! periodic domain (north/south) over an overflow bathymetry 48 !! - on a beta-plane 49 !! - with NO Coriolis 48 !! OVERFLOW configuration : uniform grid spacing (1km) 49 !! without Coriolis force (f=0) 50 50 !! 51 51 !! ** Action : - define longitude & latitude of t-, u-, v- and f-points (in degrees) … … 63 63 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1e2u, pe1e2v ! u- & v-surfaces (if reduction in strait) [m2] 64 64 ! 65 INTEGER :: ji, jj ! dummy loop indices 66 REAL(wp) :: zlam1, zlam0, zcos_alpha, zim1 , zjm1 , ze1 , ze1deg, zf0 ! local scalars 67 REAL(wp) :: zphi1, zphi0, zsin_alpha, zim05, zjm05, zbeta, znorme ! - - 65 INTEGER :: ji, jj ! dummy loop indices 66 REAL(wp) :: zfact ! local scalars 68 67 !!------------------------------------------------------------------------------- 69 68 ! 70 69 IF( nn_timing == 1 ) CALL timing_start('usr_def_hgr') 71 70 ! 72 ! !== beta-plane with regular grid-spacing and rotated domain ==! (OVERFLOW configuration) 71 IF(lwp) WRITE(numout,*) 72 IF(lwp) WRITE(numout,*) 'usr_def_hgr : OVERFLOW configuration bassin' 73 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ uniform 1km grid spacing WITHOUT Coriolis force (f=0)' 73 74 ! 74 IF(lwp) WRITE(numout,*) 75 IF(lwp) WRITE(numout,*) 'usr_def_hgr : OVERFLOW configuration bassin on beta-plane with NO Coriolis)' 76 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 77 ! 78 ! 79 ! !== grid point position ==! 80 ! !== f-plane with regular grid-spacing ==! 81 ! 82 IF(lwp) WRITE(numout,*) 83 IF(lwp) WRITE(numout,*) ' OVERFLOW f-plane with regular grid-spacing' 84 ! 85 ! Position coordinates 86 ! ========== 75 ! !== grid point position ==! (in kilometers) 76 zfact = rn_dx * 1.e-3 ! conversion in km 87 77 DO jj = 1, jpj 88 DO ji = 1, jpi 89 ! glamt(i,j) longitude at T-point 90 pglamt(ji,jj) = - 0.5 + ( REAL( ji - 1 + nimpp - 1 ) ) 91 ! glamu(i,j) longitude at U-point 92 pglamu(ji,jj) = - 0.5 + ( REAL( ji - 1 + nimpp - 1 ) + 0.5 ) 93 ! glamv(i,j) longitude at V-point 78 DO ji = 1, jpi ! longitude 79 pglamt(ji,jj) = zfact * ( - 0.5 + ( REAL( ji-1 + nimpp-1 ) , wp ) ) 80 pglamu(ji,jj) = zfact * ( - 0.5 + ( REAL( ji-1 + nimpp-1 ) + 0.5 , wp ) ) 94 81 pglamv(ji,jj) = pglamt(ji,jj) 95 ! glamf(i,j) longitude at F-point96 82 pglamf(ji,jj) = pglamu(ji,jj) 97 ! 98 !gphit(i,j) latitude at T-point 99 pgphit(ji,jj) = - 0.5 + ( REAL( jj - 1 + njmpp - 1 ) ) 100 !gphiu(i,j) latitude at U-point 83 ! ! latitude 84 pgphit(ji,jj) = zfact * ( - 0.5 + ( REAL( jj-1 + njmpp-1 ) , wp ) ) 101 85 pgphiu(ji,jj) = pgphit(ji,jj) 102 !gphiv(i,j) latitude at V-point 103 pgphiv(ji,jj) = - 0.5 + ( REAL( jj - 1 + njmpp - 1 ) + 0.5 ) 104 !gphif(i,j) latitude at F-point 86 pgphiv(ji,jj) = zfact * ( - 0.5 + ( REAL( jj-1 + njmpp-1 ) + 0.5 , wp ) ) 105 87 pgphif(ji,jj) = pgphiv(ji,jj) 106 88 END DO 107 89 END DO 108 90 ! 109 ! Horizontal scale factors (in meters) 110 ! ====== 111 pe1t(:,:) = 1000 ; pe2t(:,:) = 1000 112 pe1u(:,:) = 1000 ; pe2u(:,:) = 1000 113 pe1v(:,:) = 1000 ; pe2v(:,:) = 1000 114 pe1f(:,:) = 1000 ; pe2f(:,:) = 1000 91 ! !== Horizontal scale factors ==! (in meters) 92 pe1t(:,:) = rn_dx ; pe2t(:,:) = rn_dx 93 pe1u(:,:) = rn_dx ; pe2u(:,:) = rn_dx 94 pe1v(:,:) = rn_dx ; pe2v(:,:) = rn_dx 95 pe1f(:,:) = rn_dx ; pe2f(:,:) = rn_dx 115 96 ! 116 ! 117 ke1e2u_v = 0 97 ! ! NO reduction of grid size in some straits 98 ke1e2u_v = 0 ! ==>> u_ & v_surfaces will be computed in dom_ghr routine 118 99 ! 119 100 ! 120 101 ! !== Coriolis parameter ==! 121 kff = 1 ! indicate not to compute ffafterward102 kff = 1 ! indicate not to compute Coriolis parameter afterward 122 103 ! 123 pff_f(:,:) = 0 124 pff_t(:,:) = 0 125 ! 126 IF(lwp) WRITE(numout,*) ' beta-plane used. beta = ', zbeta, ' 1/(s.m)' 104 pff_f(:,:) = 0._wp ! here No earth rotation: f=0 105 pff_t(:,:) = 0._wp 127 106 ! 128 107 IF( nn_timing == 1 ) CALL timing_stop('usr_def_hgr') -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/OVERFLOW/MY_SRC/usrdef_istate.F90
r6895 r6900 2 2 !!============================================================================== 3 3 !! *** MODULE usrdef_istate *** 4 !! 5 !! === OVERFLOW configuration === 6 !! 4 7 !! User defined : set the initial state of a user configuration 5 8 !!============================================================================== 6 !! History : NEMO ! 2016-03 (S. Flavoni ) Original code9 !! History : NEMO ! 2016-03 (S. Flavoni, G. Madec) Original code 7 10 !!---------------------------------------------------------------------- 8 11 … … 40 43 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT(in ) :: pdept ! depth of t-point [m] 41 44 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT(in ) :: ptmask ! t-point ocean mask [m] 42 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT( out) :: pts ! T & S fields [Cel cius ; g/kg]45 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT( out) :: pts ! T & S fields [Celsius ; g/kg] 43 46 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pu ! i-component of the velocity [m/s] 44 47 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pv ! j-component of the velocity [m/s] 45 48 REAL(wp), DIMENSION(jpi,jpj) , INTENT( out) :: pssh ! sea-surface height 46 49 ! 47 INTEGER :: ji, jj, jk! dummy loop indices48 INTEGRE :: dam ! location of dam50 INTEGER :: jk ! dummy loop indices 51 REAL(wp) :: zdam ! location of dam [m] 49 52 !!---------------------------------------------------------------------- 50 53 ! 51 54 IF(lwp) WRITE(numout,*) 52 IF(lwp) WRITE(numout,*) 'usr_def_istate : analytical definition of initial state '55 IF(lwp) WRITE(numout,*) 'usr_def_istate : OVERFLOW configuration, analytical definition of initial state ' 53 56 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ Ocean at rest, with a dam on T profile, and uniform S profile' 54 57 ! … … 57 60 pssh(:,:) = 0._wp 58 61 ! 59 DO jk = 1, jpk ! T & S profiles 60 DO jj = 1, jpj 61 DO ji = 1, jpi 62 IF( ji .LE. dam ) THEN 63 pts(ji,jj,jk,jp_tem) = 10. * tmask(ji,jj,jk) 64 ELSE 65 pts(ji,jj,jk,jp_tem) = 20. * tmask(ji,jj,jk) 66 ENDIF 67 END DO 68 END DO 62 ! ! T & S profiles 63 zdam = 20.e+3 64 pts(:,:,:,jp_tem) = 20._wp * tmask(:,:,:) 65 DO jk = 1, jpkm1 66 WHERE( gphit(:,:) <= zdam ) pts(:,:,jk,jp_tem) = 10._wp * tmask(:,:,jk) 69 67 END DO 70 68 ! -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/OVERFLOW/MY_SRC/usrdef_sbc.F90
r6898 r6900 2 2 !!====================================================================== 3 3 !! *** MODULE usrdef_sbc *** 4 !! Ocean forcing: user defined momentum, heat and freshwater forcings 4 !! 5 !! === OVERFLOW configuration === 5 6 !! 6 !! === Here OVERFLOW configuration === 7 !! 7 !! User defined : user defined momentum, heat and freshwater forcings 8 8 !!===================================================================== 9 9 !! History : 4.0 ! 2016-03 (S. Flavoni, G. Madec) user defined interface … … 52 52 !!---------------------------------------------------------------------- 53 53 INTEGER, INTENT(in) :: kt ! ocean time step 54 !!55 54 !!--------------------------------------------------------------------- 56 55 ! … … 60 59 IF(lwp) WRITE(numout,*)' ~~~~~~~~~~~ utau = vtau = taum = wndm = qns = qsr = emp = sfx = 0' 61 60 ! 62 utau(:,:) = 0. 0_wp61 utau(:,:) = 0._wp 63 62 vtau(:,:) = 0._wp 64 taum(:,:) = 0. 0_wp65 wndm(:,:) = 0. 0_wp63 taum(:,:) = 0._wp 64 wndm(:,:) = 0._wp 66 65 ! 67 emp (:,:) = 0. 0_wp68 sfx (:,:) = 0. 0_wp69 qns (:,:) = 0. 0_wp70 qsr (:,:) = 0. 0_wp66 emp (:,:) = 0._wp 67 sfx (:,:) = 0._wp 68 qns (:,:) = 0._wp 69 qsr (:,:) = 0._wp 71 70 ! 72 71 ENDIF -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/OVERFLOW/MY_SRC/usrdef_zgr.F90
r6895 r6900 72 72 ! type of vertical coordinate 73 73 ! --------------------------- 74 ld_zco = .TRUE. ! OVERFLOW case: z-coordinate & no ocean cavities75 ld_zps = .FALSE.76 ld_sco = .FALSE.74 !SF ld_zco = .TRUE. ! OVERFLOW case: z-coordinate & no ocean cavities 75 !SF ld_zps = .FALSE. 76 !SF ld_sco = .FALSE. 77 77 ld_isfcav = .FALSE. 78 78 ! -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90
r6596 r6900 69 69 IF( .NOT. ln_limini ) THEN 70 70 71 CALL eos_fzp( tsn(:,:,1,jp_sal), tfu(:,:) ) ! freezing/melting point of sea water [Cel cius]71 CALL eos_fzp( tsn(:,:,1,jp_sal), tfu(:,:) ) ! freezing/melting point of sea water [Celsius] 72 72 tfu(:,:) = tfu(:,:) * tmask(:,:,1) 73 73 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
r6140 r6900 2 2 !!====================================================================== 3 3 !! *** MODULE daymod *** 4 !! Ocean :calendar4 !! Ocean : management of the model calendar 5 5 !!===================================================================== 6 6 !! History : OPA ! 1994-09 (M. Pontaud M. Imbard) Original code … … 16 16 !!---------------------------------------------------------------------- 17 17 !! day : calendar 18 !! 19 !! ------------------------------- 20 !! ----------- WARNING ----------- 21 !! 22 !! we suppose that the time step is deviding the number of second of in a day 23 !! ---> MOD( rday, rdt ) == 0 24 !! 25 !! ----------- WARNING ----------- 26 !! ------------------------------- 27 !! 18 !!---------------------------------------------------------------------- 19 !! ----------- WARNING ----------- 20 !! ------------------------------- 21 !! sbcmod assume that the time step is dividing the number of second of 22 !! in a day, i.e. ===> MOD( rday, rdt ) == 0 23 !! except when user defined forcing is used (see sbcmod.F90) 28 24 !!---------------------------------------------------------------------- 29 25 USE dom_oce ! ocean space and time domain 30 26 USE phycst ! physical constants 27 USE ioipsl , ONLY : ymds2ju ! for calendar 28 USE trc_oce , ONLY : lk_offline ! offline flag 29 ! 31 30 USE in_out_manager ! I/O manager 31 USE prtctl ! Print control 32 32 USE iom ! 33 USE ioipsl , ONLY : ymds2ju ! for calendar34 USE prtctl ! Print control35 USE trc_oce , ONLY : lk_offline ! offline flag36 33 USE timing ! Timing 37 34 USE restart ! restart … … 47 44 48 45 !!---------------------------------------------------------------------- 49 !! NEMO/OPA 3.3 , NEMO Consortium (2010)46 !! NEMO/OPA 4.0 , NEMO Consortium (2016) 50 47 !! $Id$ 51 48 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 70 67 !! - nmonth_len, nyear_len, nmonth_half, nmonth_end through day_mth 71 68 !!---------------------------------------------------------------------- 72 INTEGER :: inbday, idweek 73 REAL(wp) :: zjul 69 INTEGER :: inbday, idweek ! local integers 70 REAL(wp) :: zjul ! local scalar 74 71 !!---------------------------------------------------------------------- 75 72 ! … … 79 76 & 'You must do a restart at higher frequency (or remove this stop and recompile the code in I8)' ) 80 77 ENDIF 81 ! all calendar staff is based on the fact that MOD( rday, rdt ) == 0 82 IF( MOD( rday , rdt ) /= 0. ) CALL ctl_stop( 'the time step must devide the number of second of in a day' ) 83 IF( MOD( rday , 2. ) /= 0. ) CALL ctl_stop( 'the number of second of in a day must be an even number' ) 84 IF( MOD( rdt , 2. ) /= 0. ) CALL ctl_stop( 'the time step (in second) must be an even number' ) 85 nsecd = NINT(rday ) 86 nsecd05 = NINT(0.5 * rday ) 87 ndt = NINT( rdt ) 88 ndt05 = NINT(0.5 * rdt ) 89 90 IF( .NOT. lk_offline ) CALL day_rst( nit000, 'READ' ) 78 nsecd = NINT( rday ) 79 nsecd05 = NINT( 0.5 * rday ) 80 ndt = NINT( rdt ) 81 ndt05 = NINT( 0.5 * rdt ) 82 83 IF( .NOT. lk_offline ) CALL day_rst( nit000, 'READ' ) 91 84 92 85 ! set the calandar from ndastp (read in restart file and namelist) 93 94 86 nyear = ndastp / 10000 95 87 nmonth = ( ndastp - (nyear * 10000) ) / 100 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/OBS/obs_conv_functions.h90
r2287 r6900 71 71 72 72 !! * Arguments 73 REAL(KIND=wp) :: pft ! in situ temperature in degrees celcius73 REAL(KIND=wp) :: pft ! in situ temperature in degrees Celsius 74 74 REAL(KIND=wp) :: pfs ! salinity in psu 75 75 REAL(KIND=wp) :: pfp ! pressure in bars -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
r5836 r6900 215 215 !!---------------------------------------------------------------------- 216 216 TYPE(fld), INTENT(in), DIMENSION(:) :: sf ! input data 217 REAL(wp) , INTENT(in), DIMENSION(jpi,jpj) :: pst ! surface temperature [Cel cius]217 REAL(wp) , INTENT(in), DIMENSION(jpi,jpj) :: pst ! surface temperature [Celsius] 218 218 !! 219 219 INTEGER :: ji, jj ! dummy loop indices … … 279 279 DO ji = 1, jpi 280 280 ! 281 zsst = pst(ji,jj) + rt0 ! converte Cel cius to Kelvin the SST281 zsst = pst(ji,jj) + rt0 ! converte Celsius to Kelvin the SST 282 282 ztatm = sf(jp_tair)%fnow(ji,jj,1) ! and set minimum value far above 0 K (=rt0 over land) 283 283 zcco1 = 1.0 - sf(jp_ccov)%fnow(ji,jj,1) ! fraction of clear sky ( 1 - cloud cover) … … 371 371 ! 372 372 qns(:,:) = zqlw(:,:) - zqsb(:,:) - zqla(:,:) & ! Downward Non Solar flux 373 & - zqla(:,:) * pst(:,:) * zcevap & ! remove evap. heat content at SST in Cel cius374 & + sf(jp_prec)%fnow(:,:,1) * sf(jp_tair)%fnow(:,:,1) * zcprec ! add precip. heat content at Tair in Cel cius373 & - zqla(:,:) * pst(:,:) * zcevap & ! remove evap. heat content at SST in Celsius 374 & + sf(jp_prec)%fnow(:,:,1) * sf(jp_tair)%fnow(:,:,1) * zcprec ! add precip. heat content at Tair in Celsius 375 375 qns(:,:) = qns(:,:) * tmask(:,:,1) 376 376 #if defined key_lim3 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r6140 r6900 241 241 INTEGER , INTENT(in ) :: kt ! time step index 242 242 TYPE(fld), INTENT(inout), DIMENSION(:) :: sf ! input data 243 REAL(wp) , INTENT(in) , DIMENSION(:,:) :: pst ! surface temperature [Cel cius]243 REAL(wp) , INTENT(in) , DIMENSION(:,:) :: pst ! surface temperature [Celsius] 244 244 REAL(wp) , INTENT(in) , DIMENSION(:,:) :: pu ! surface current at U-point (i-component) [m/s] 245 245 REAL(wp) , INTENT(in) , DIMENSION(:,:) :: pv ! surface current at V-point (j-component) [m/s] … … 267 267 zcoef_qsatw = 0.98 * 640380. / rhoa 268 268 269 zst(:,:) = pst(:,:) + rt0 ! convert SST from Cel cius to Kelvin (and set minimum value far above 0 K)269 zst(:,:) = pst(:,:) + rt0 ! convert SST from Celsius to Kelvin (and set minimum value far above 0 K) 270 270 271 271 ! ----------------------------------------------------------------------------- ! -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r6165 r6900 555 555 WRITE(numout,*)' Additional received fields from OPA component : ' 556 556 ENDIF 557 WRITE(numout,*)' sea surface temperature (Cel cius) '557 WRITE(numout,*)' sea surface temperature (Celsius) ' 558 558 WRITE(numout,*)' sea surface salinity ' 559 559 WRITE(numout,*)' surface currents ' … … 710 710 WRITE(numout,*) 711 711 WRITE(numout,*)' sent fields to SAS component ' 712 WRITE(numout,*)' sea surface temperature (T before, Cel cius) '712 WRITE(numout,*)' sea surface temperature (T before, Celsius) ' 713 713 WRITE(numout,*)' sea surface salinity ' 714 714 WRITE(numout,*)' surface currents U,V on local grid and spherical coordinates' -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90
r6596 r6900 101 101 ! ( d rho / dt ) / ( d rho / ds ) ( s = 34, t = -1.8 ) 102 102 103 CALL eos_fzp( sss_m(:,:), fr_i(:,:) ) ! sea surface freezing temperature [Cel cius]103 CALL eos_fzp( sss_m(:,:), fr_i(:,:) ) ! sea surface freezing temperature [Celsius] 104 104 fr_i(:,:) = fr_i(:,:) * tmask(:,:,1) 105 105 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r6717 r6900 19 19 !! sbc_init : read namsbc namelist 20 20 !! sbc : surface ocean momentum, heat and freshwater boundary conditions 21 !! sbc_final : Finalize CICE ice model (if used) 21 22 !!---------------------------------------------------------------------- 22 23 USE oce ! ocean dynamics and tracers … … 37 38 USE sbcice_cice ! surface boundary condition: CICE sea-ice model 38 39 USE sbccpl ! surface boundary condition: coupled florulation 39 USE usrdef_sbc ! user defined: surface boundary condition40 40 USE cpl_oasis3 ! OASIS routines for coupling 41 41 USE sbcssr ! surface boundary condition: sea surface restoring … … 47 47 USE sbcwave ! Wave module 48 48 USE bdy_par ! Require lk_bdy 49 USE usrdef_closea ! closed sea 49 USE usrdef_sbc ! user defined: surface boundary condition 50 USE usrdef_closea ! user defined: closed sea 50 51 ! 51 52 USE prtctl ! Print control (prt_ctl routine) … … 55 56 USE timing ! Timing 56 57 57 USE diurnal_bulk, ONLY: & 58 & ln_diurnal_only 58 USE diurnal_bulk, ONLY: ln_diurnal_only ! diurnal SST diagnostic 59 59 60 60 IMPLICIT NONE … … 67 67 68 68 !!---------------------------------------------------------------------- 69 !! NEMO/OPA 4.0 , NEMO-consortium (201 1)69 !! NEMO/OPA 4.0 , NEMO-consortium (2016) 70 70 !! $Id$ 71 71 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 105 105 ENDIF 106 106 ! 107 REWIND( numnam_ref ) 107 REWIND( numnam_ref ) ! Namelist namsbc in reference namelist : Surface boundary 108 108 READ ( numnam_ref, namsbc, IOSTAT = ios, ERR = 901) 109 109 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc in reference namelist', lwp ) 110 110 ! 111 REWIND( numnam_cfg ) 111 REWIND( numnam_cfg ) ! Namelist namsbc in configuration namelist : Parameters of the run 112 112 READ ( numnam_cfg, namsbc, IOSTAT = ios, ERR = 902 ) 113 113 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc in configuration namelist', lwp ) … … 122 122 ! 123 123 IF(lwp) THEN ! Control print 124 WRITE(numout,*) ' Namelist namsbc (partly overwritten with CPP key setting)' 125 WRITE(numout,*) ' frequency update of sbc (and ice) nn_fsbc = ', nn_fsbc 126 WRITE(numout,*) ' Type of air-sea fluxes : ' 127 WRITE(numout,*) ' user defined formulation ln_usr = ', ln_usr 128 WRITE(numout,*) ' flux formulation ln_flx = ', ln_flx 129 WRITE(numout,*) ' CLIO bulk formulation ln_blk_clio = ', ln_blk_clio 130 WRITE(numout,*) ' CORE bulk formulation ln_blk_core = ', ln_blk_core 131 WRITE(numout,*) ' MFS bulk formulation ln_blk_mfs = ', ln_blk_mfs 132 WRITE(numout,*) ' Type of coupling (Ocean/Ice/Atmosphere) : ' 133 WRITE(numout,*) ' ocean-atmosphere coupled formulation ln_cpl = ', ln_cpl 134 WRITE(numout,*) ' forced-coupled mixed formulation ln_mixcpl = ', ln_mixcpl 135 WRITE(numout,*) ' OASIS coupling (with atm or sas) lk_oasis = ', lk_oasis 136 WRITE(numout,*) ' components of your executable nn_components = ', nn_components 137 WRITE(numout,*) ' Multicategory heat flux formulation (LIM3) nn_limflx = ', nn_limflx 138 WRITE(numout,*) ' Sea-ice : ' 139 WRITE(numout,*) ' ice management in the sbc (=0/1/2/3) nn_ice = ', nn_ice 140 WRITE(numout,*) ' ice-ocean embedded/levitating (=0/1/2) nn_ice_embd = ', nn_ice_embd 141 WRITE(numout,*) ' Misc. options of sbc : ' 142 WRITE(numout,*) ' Light penetration in temperature Eq. ln_traqsr = ', ln_traqsr 143 WRITE(numout,*) ' daily mean to diurnal cycle qsr ln_dm2dc = ', ln_dm2dc 144 WRITE(numout,*) ' Sea Surface Restoring on SST and/or SSS ln_ssr = ', ln_ssr 145 WRITE(numout,*) ' FreshWater Budget control (=0/1/2) nn_fwb = ', nn_fwb 146 WRITE(numout,*) ' Patm gradient added in ocean & ice Eqs. ln_apr_dyn = ', ln_apr_dyn 147 WRITE(numout,*) ' runoff / runoff mouths ln_rnf = ', ln_rnf 148 WRITE(numout,*) ' iceshelf formulation ln_isf = ', ln_isf 149 WRITE(numout,*) ' closed sea (=0/1) (set in namdom) nn_closea = ', nn_closea 150 WRITE(numout,*) ' nb of iterations if land-sea-mask applied nn_lsm = ', nn_lsm 151 WRITE(numout,*) ' surface wave ln_wave = ', ln_wave 124 WRITE(numout,*) ' Namelist namsbc (partly overwritten with CPP key setting)' 125 WRITE(numout,*) ' Frequency update of sbc (and ice) nn_fsbc = ', nn_fsbc 126 WRITE(numout,*) ' Type of air-sea fluxes : ' 127 WRITE(numout,*) ' user defined formulation ln_usr = ', ln_usr 128 WRITE(numout,*) ' flux formulation ln_flx = ', ln_flx 129 WRITE(numout,*) ' CLIO bulk formulation ln_blk_clio = ', ln_blk_clio 130 WRITE(numout,*) ' CORE bulk formulation ln_blk_core = ', ln_blk_core 131 WRITE(numout,*) ' MFS bulk formulation ln_blk_mfs = ', ln_blk_mfs 132 WRITE(numout,*) ' Type of coupling (Ocean/Ice/Atmosphere) : ' 133 WRITE(numout,*) ' ocean-atmosphere coupled formulation ln_cpl = ', ln_cpl 134 WRITE(numout,*) ' forced-coupled mixed formulation ln_mixcpl = ', ln_mixcpl 135 WRITE(numout,*) ' OASIS coupling (with atm or sas) lk_oasis = ', lk_oasis 136 WRITE(numout,*) ' components of your executable nn_components = ', nn_components 137 WRITE(numout,*) ' Multicategory heat flux formulation (LIM3) nn_limflx = ', nn_limflx 138 WRITE(numout,*) ' Sea-ice : ' 139 WRITE(numout,*) ' ice management in the sbc (=0/1/2/3) nn_ice = ', nn_ice 140 WRITE(numout,*) ' ice-ocean embedded/levitating (=0/1/2) nn_ice_embd = ', nn_ice_embd 141 WRITE(numout,*) ' Misc. options of sbc : ' 142 WRITE(numout,*) ' Light penetration in temperature Eq. ln_traqsr = ', ln_traqsr 143 WRITE(numout,*) ' daily mean to diurnal cycle qsr ln_dm2dc = ', ln_dm2dc 144 WRITE(numout,*) ' Sea Surface Restoring on SST and/or SSS ln_ssr = ', ln_ssr 145 WRITE(numout,*) ' FreshWater Budget control (=0/1/2) nn_fwb = ', nn_fwb 146 WRITE(numout,*) ' Patm gradient added in ocean & ice Eqs. ln_apr_dyn = ', ln_apr_dyn 147 WRITE(numout,*) ' runoff / runoff mouths ln_rnf = ', ln_rnf 148 WRITE(numout,*) ' iceshelf formulation ln_isf = ', ln_isf 149 WRITE(numout,*) ' closed sea (=0/1) (set in namdom) nn_closea = ', nn_closea 150 WRITE(numout,*) ' nb of iterations if land-sea-mask applied nn_lsm = ', nn_lsm 151 WRITE(numout,*) ' surface wave ln_wave = ', ln_wave 152 ENDIF 153 ! 154 IF( .NOT.ln_usr ) THEN ! the model calendar needs some specificities (except in user defined case) 155 IF( MOD( rday , rdt ) /= 0. ) CALL ctl_stop( 'the time step must devide the number of second of in a day' ) 156 IF( MOD( rday , 2. ) /= 0. ) CALL ctl_stop( 'the number of second of in a day must be an even number' ) 157 IF( MOD( rdt , 2. ) /= 0. ) CALL ctl_stop( 'the time step (in second) must be an even number' ) 152 158 ENDIF 153 159 ! -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
r6140 r6900 46 46 !! 47 47 !! ** Method : compute mean surface velocity (2 components at U and 48 !! V-points) [m/s], temperature [Cel cius] and salinity [psu] over48 !! V-points) [m/s], temperature [Celsius] and salinity [psu] over 49 49 !! the periode (kt - nn_fsbc) to kt 50 50 !! Note that the inverse barometer ssh (i.e. ssh associated with Patm) … … 137 137 ! ! ---------------------------------------- ! 138 138 zcoef = 1. / REAL( nn_fsbc, wp ) 139 sst_m(:,:) = sst_m(:,:) * zcoef ! mean SST [Cel cius]139 sst_m(:,:) = sst_m(:,:) * zcoef ! mean SST [Celsius] 140 140 sss_m(:,:) = sss_m(:,:) * zcoef ! mean SSS [psu] 141 141 ssu_m(:,:) = ssu_m(:,:) * zcoef ! mean suface current [m/s] -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r6140 r6900 195 195 !! 196 196 !! nn_eos = -1 : polynomial TEOS-10 equation of state is used for rho(t,s,z). 197 !! Check value: rho = 1028.21993233072 kg/m^3 for z=3000 dbar, ct=3 Cel cius, sa=35.5 g/kg197 !! Check value: rho = 1028.21993233072 kg/m^3 for z=3000 dbar, ct=3 Celsius, sa=35.5 g/kg 198 198 !! 199 199 !! nn_eos = 0 : polynomial EOS-80 equation of state is used for rho(t,s,z). 200 !! Check value: rho = 1028.35011066567 kg/m^3 for z=3000 dbar, pt=3 Cel cius, sp=35.5 psu200 !! Check value: rho = 1028.35011066567 kg/m^3 for z=3000 dbar, pt=3 Celsius, sp=35.5 psu 201 201 !! 202 202 !! nn_eos = 1 : simplified equation of state … … 212 212 !! TEOS-10 Manual, 2010 213 213 !!---------------------------------------------------------------------- 214 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Cel cius]214 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 215 215 ! ! 2 : salinity [psu] 216 216 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT( out) :: prd ! in situ density [-] … … 307 307 !! 308 308 !!---------------------------------------------------------------------- 309 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Cel cius]309 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 310 310 ! ! 2 : salinity [psu] 311 311 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT( out) :: prd ! in situ density [-] … … 472 472 !! 473 473 !!---------------------------------------------------------------------- 474 REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Cel cius]474 REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 475 475 ! ! 2 : salinity [psu] 476 476 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in ) :: pdep ! depth [m] … … 897 897 !! 898 898 !!---------------------------------------------------------------------- 899 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! pot. temperature and salinity [Cel cius,psu]900 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pab ! thermal/haline expansion coef. [Cel cius-1,psu-1]899 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! pot. temperature and salinity [Celsius,psu] 900 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pab ! thermal/haline expansion coef. [Celsius-1,psu-1] 901 901 REAL(wp), DIMENSION(jpi,jpj,jpk ), INTENT( out) :: pn2 ! Brunt-Vaisala frequency squared [1/s^2] 902 902 ! … … 934 934 !! *** ROUTINE eos_pt_from_ct *** 935 935 !! 936 !! ** Purpose : Compute pot.temp. from cons. temp. [Cel cius]936 !! ** Purpose : Compute pot.temp. from cons. temp. [Celsius] 937 937 !! 938 938 !! ** Method : rational approximation (5/3th order) of TEOS-10 algorithm … … 942 942 !! Rational approximation to TEOS10 algorithm (rms error on WOA13 values: 4.0e-5 degC) 943 943 !!---------------------------------------------------------------------- 944 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: ctmp ! Cons. Temp [Celcius] 944 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: ctmp ! Cons. Temp 945 [Celsius] 945 946 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: psal ! salinity [psu] 946 947 ! Leave result array automatic rather than making explicitly allocated 947 REAL(wp), DIMENSION(jpi,jpj) :: ptmp ! potential temperature [Cel cius]948 REAL(wp), DIMENSION(jpi,jpj) :: ptmp ! potential temperature [Celsius] 948 949 ! 949 950 INTEGER :: ji, jj ! dummy loop indices … … 993 994 !! *** ROUTINE eos_fzp *** 994 995 !! 995 !! ** Purpose : Compute the freezing point temperature [Cel cius]996 !! 997 !! ** Method : UNESCO freezing point (ptf) in Cel cius is given by996 !! ** Purpose : Compute the freezing point temperature [Celsius] 997 !! 998 !! ** Method : UNESCO freezing point (ptf) in Celsius is given by 998 999 !! ptf(t,z) = (-.0575+1.710523e-3*sqrt(abs(s))-2.154996e-4*s)*s - 7.53e-4*z 999 1000 !! checkvalue: tf=-2.588567 Celsius for s=40psu, z=500m … … 1003 1004 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: psal ! salinity [psu] 1004 1005 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ), OPTIONAL :: pdep ! depth [m] 1005 REAL(wp), DIMENSION(jpi,jpj), INTENT(out ) :: ptf ! freezing temperature [Cel cius]1006 REAL(wp), DIMENSION(jpi,jpj), INTENT(out ) :: ptf ! freezing temperature [Celsius] 1006 1007 ! 1007 1008 INTEGER :: ji, jj ! dummy loop indices … … 1044 1045 !! *** ROUTINE eos_fzp *** 1045 1046 !! 1046 !! ** Purpose : Compute the freezing point temperature [Cel cius]1047 !! 1048 !! ** Method : UNESCO freezing point (ptf) in Cel cius is given by1047 !! ** Purpose : Compute the freezing point temperature [Celsius] 1048 !! 1049 !! ** Method : UNESCO freezing point (ptf) in Celsius is given by 1049 1050 !! ptf(t,z) = (-.0575+1.710523e-3*sqrt(abs(s))-2.154996e-4*s)*s - 7.53e-4*z 1050 1051 !! checkvalue: tf=-2.588567 Celsius for s=40psu, z=500m … … 1054 1055 REAL(wp), INTENT(in ) :: psal ! salinity [psu] 1055 1056 REAL(wp), INTENT(in ), OPTIONAL :: pdep ! depth [m] 1056 REAL(wp), INTENT(out) :: ptf ! freezing temperature [Cel cius]1057 REAL(wp), INTENT(out) :: ptf ! freezing temperature [Celsius] 1057 1058 ! 1058 1059 REAL(wp) :: zs ! local scalars -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90
r6140 r6900 149 149 DO jj = 2, jpjm1 150 150 DO ji = fs_2, fs_jpim1 ! vector opt. 151 ! total intermediate advective trends151 ! ! total intermediate advective trends 152 152 ztra = - ( zwx(ji,jj,jk) - zwx(ji-1,jj ,jk ) & 153 153 & + zwy(ji,jj,jk) - zwy(ji ,jj-1,jk ) & 154 & + zwz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 155 ! update and guess with monotonic sheme 156 !!gm why tmask added in the two following lines ??? the mask is done in tranxt ! 157 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra * tmask(ji,jj,jk) 158 zwi(ji,jj,jk) = ( ptb(ji,jj,jk,jn) + p2dt * ztra ) * tmask(ji,jj,jk) 154 & + zwz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) * r1_e1e2t(ji,jj) 155 ! ! update and guess with monotonic sheme 156 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra / e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 157 zwi(ji,jj,jk) = ( e3t_b(ji,jj,jk) * ptb(ji,jj,jk,jn) + p2dt * ztra ) / e3t_a(ji,jj,jk) * tmask(ji,jj,jk) 159 158 END DO 160 159 END DO … … 163 162 ! 164 163 IF( l_trd ) THEN ! trend diagnostics (contribution of upstream fluxes) 165 ztrdx(:,:,:) = zwx(:,:,:) ; ztrdy(:,:,:) = zwy(:,:,:); ztrdz(:,:,:) = zwz(:,:,:)164 ztrdx(:,:,:) = zwx(:,:,:) ; ztrdy(:,:,:) = zwy(:,:,:) ; ztrdz(:,:,:) = zwz(:,:,:) 166 165 END IF 167 166 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) … … 364 363 ! 365 364 CALL wrk_alloc( jpi,jpj, zwx_sav, zwy_sav ) 366 CALL wrk_alloc( jpi,jpj, jpk,zwx, zwy, zwz, zwi, zhdiv, zwzts, zwz_sav )365 CALL wrk_alloc( jpi,jpj,jpk, zwx, zwy, zwz, zwi, zhdiv, zwzts, zwz_sav ) 367 366 CALL wrk_alloc( jpi,jpj,jpk,kjpt+1, ztrs ) 368 367 ! … … 436 435 ztra = - ( zwx(ji,jj,jk) - zwx(ji-1,jj ,jk ) & 437 436 & + zwy(ji,jj,jk) - zwy(ji ,jj-1,jk ) & 438 & + zwz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk)437 & + zwz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) * r1_e1e2t(ji,jj) 439 438 ! ! update and guess with monotonic sheme 440 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra441 zwi(ji,jj,jk) = ( ptb(ji,jj,jk,jn) + p2dt * ztra) * tmask(ji,jj,jk)439 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra / e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 440 zwi(ji,jj,jk) = ( e3t_b(ji,jj,jk) * ptb(ji,jj,jk,jn) + p2dt * ztra ) / e3t_a(ji,jj,jk) * tmask(ji,jj,jk) 442 441 END DO 443 442 END DO … … 488 487 zwz_sav(:,:,:) = zwz(:,:,:) 489 488 ztrs (:,:,:,1) = ptb(:,:,:,jn) 489 ztrs (:,:,1,2) = ptb(:,:,1,jn) 490 ztrs (:,:,1,3) = ptb(:,:,1,jn) 490 491 zwzts (:,:,:) = 0._wp 491 492 ! -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_istate.F90
r6893 r6900 40 40 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT(in ) :: pdept ! depth of t-point [m] 41 41 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT(in ) :: ptmask ! t-point ocean mask [m] 42 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT( out) :: pts ! T & S fields [Cel cius ; g/kg]42 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT( out) :: pts ! T & S fields [Celsius ; g/kg] 43 43 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pu ! i-component of the velocity [m/s] 44 44 REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT( out) :: pv ! j-component of the velocity [m/s] -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/oce.F90
r6140 r6900 23 23 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: wn !: vertical velocity [m/s] 24 24 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hdivn !: horizontal divergence [s-1] 25 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: tsb , tsn , tsa !: 4D T-S fields [Cel cius,psu]26 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: rab_b, rab_n !: thermal/haline expansion coef. [Cel cius-1,psu-1]25 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: tsb , tsn , tsa !: 4D T-S fields [Celsius,psu] 26 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: rab_b, rab_n !: thermal/haline expansion coef. [Celsius-1,psu-1] 27 27 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rn2b , rn2 !: brunt-vaisala frequency**2 [s-2] 28 28 ! -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
r6140 r6900 42 42 REAL(wp), DIMENSION(4,2) :: soa ! coefficient for solubility of CFC [mol/l/atm] 43 43 REAL(wp), DIMENSION(3,2) :: sob ! " " 44 REAL(wp), DIMENSION(4,2) :: sca ! coefficients for schmidt number in degre Cel cius44 REAL(wp), DIMENSION(4,2) :: sca ! coefficients for schmidt number in degre Celsius 45 45 46 46 ! ! coefficients for conversion
Note: See TracChangeset
for help on using the changeset viewer.