Changeset 6895
- Timestamp:
- 2016-08-26T16:53:01+02:00 (8 years ago)
- Location:
- branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/OVERFLOW
- Files:
-
- 4 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/OVERFLOW/EXP00/namelist_cfg
r6878 r6895 17 17 &namcfg ! parameters of the configuration 18 18 !----------------------------------------------------------------------- 19 ln_read_cfg = . true. ! (=T) read the domain configuration in 'domain_cfg.nc" file19 ln_read_cfg = .false. ! (=T) read the domain configuration in 'domain_cfg.nc" file 20 20 ! ! (=F) user defined configuration ==>>> see usrdef(_...) modules 21 ln_write_cfg= .false. 21 ln_write_cfg= .false. ! (=T) create the domain configuration file 22 22 ! 23 23 cp_cfg = "overflow" ! name of the configuration -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/OVERFLOW/MY_SRC/usrdef_sbc.F90
r6879 r6895 4 4 !! Ocean forcing: user defined momentum, heat and freshwater forcings 5 5 !! 6 !! === Here GYREconfiguration ===6 !! === Here OVERFLOW configuration === 7 7 !! 8 8 !!===================================================================== … … 11 11 12 12 !!---------------------------------------------------------------------- 13 !! usr_def_sbc : user defined surface bounday conditions in GYREcase13 !! usr_def_sbc : user defined surface bounday conditions in OVERFLOW case 14 14 !!---------------------------------------------------------------------- 15 15 USE oce ! ocean dynamics and tracers … … 21 21 USE lib_mpp ! distribued memory computing library 22 22 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 23 USE lib_fortran ! 23 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 24 24 25 25 IMPLICIT NONE … … 44 44 !! condition, i.e. the momentum, heat and freshwater fluxes. 45 45 !! 46 !! ** Method : analytical seasonal cycle (all 0 fields, for overflow 47 !! case). 46 !! ** Method : all 0 fields, for OVERFLOW case 48 47 !! CAUTION : never mask the surface stress field ! 49 48 !! 50 !! ** Action : - set t he ocean surface boundary condition, i.e.49 !! ** Action : - set to ZERO all the ocean surface boundary condition, i.e. 51 50 !! utau, vtau, taum, wndm, qns, qsr, emp, sfx 52 51 !! … … 54 53 INTEGER, INTENT(in) :: kt ! ocean time step 55 54 !! 56 !SF INTEGER :: ji, jj ! dummy loop indices 57 !SF INTEGER :: zyear0 ! initial year 58 !SF INTEGER :: zmonth0 ! initial month 59 !SF INTEGER :: zday0 ! initial day 60 !SF INTEGER :: zday_year0 ! initial day since january 1st 61 !SF REAL(wp) :: ztau , ztau_sais ! wind intensity and of the seasonal cycle 62 !SF REAL(wp) :: ztime ! time in hour 63 !SF REAL(wp) :: ztimemax , ztimemin ! 21th June, and 21th decem. if date0 = 1st january 64 !SF REAL(wp) :: ztimemax1, ztimemin1 ! 21th June, and 21th decem. if date0 = 1st january 65 !SF REAL(wp) :: ztimemax2, ztimemin2 ! 21th June, and 21th decem. if date0 = 1st january 66 !SF REAL(wp) :: ztaun ! intensity 67 !SF REAL(wp) :: zemp_s, zemp_n, zemp_sais, ztstar 68 !SF REAL(wp) :: zcos_sais1, zcos_sais2, ztrp, zconv, t_star 69 !SF REAL(wp) :: zsumemp, zsurf 70 !SF REAL(wp) :: zrhoa = 1.22 ! Air density kg/m3 71 !SF REAL(wp) :: zcdrag = 1.5e-3 ! drag coefficient 72 !SF REAL(wp) :: ztx, zty, zmod, zcoef ! temporary variables 73 !SF REAL(wp) :: zyydd ! number of days in one year 74 !SF ------- 75 !SF sbc ana: 76 REAL(wp) :: zrhoa = 1.22_wp ! air density kg/m3 77 REAL(wp) :: zcdrag = 1.5e-3_wp ! drag coefficient 78 REAL(wp) :: zfact, ztx ! local scalars 79 REAL(wp) :: zcoef, zty, zmod ! - - 80 INTEGER :: nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps 55 INTEGER :: nn_tau000 = 0 ! spin up of the stress 81 56 REAL(wp) :: rn_utau0 = 0.e0 ! uniform value for the i-stress 82 57 REAL(wp) :: rn_vtau0 = 0.e0 ! uniform value for the j-stress … … 89 64 IF( kt == nit000 ) THEN 90 65 ! 91 IF(lwp) WRITE(numout,*)' sbc_ana : Constant surface fluxes read in namsbc_ana namelist'66 IF(lwp) WRITE(numout,*)' usr_sbc : OVERFLOW case: NO surface forcing' 92 67 IF(lwp) WRITE(numout,*)' ~~~~~~~ ' 93 68 IF(lwp) WRITE(numout,*)' spin up of the stress nn_tau000 = ', nn_tau000, ' time-steps' … … 97 72 IF(lwp) WRITE(numout,*)' net heat flux rn_emp0 = ', rn_emp0 , ' Kg/m2/s' 98 73 ! 99 nn_tau000 = MAX( nn_tau000, 1 ) ! must be >= 1100 !101 74 utau(:,:) = rn_utau0 102 75 vtau(:,:) = rn_vtau0 103 taum(:,:) = SQRT ( rn_utau0 * rn_utau0 + rn_vtau0 * rn_vtau0 )104 wndm(:,:) = SQRT ( taum(1,1) / ( zrhoa * zcdrag ) )76 taum(:,:) = 0.0_wp 77 wndm(:,:) = 0.0_wp 105 78 ! 106 79 emp (:,:) = rn_emp0 107 80 sfx (:,:) = 0.0_wp 108 qns (:,:) = rn_qns0 - emp(:,:) * sst_m(:,:) * rcp ! including heat content associated with mass flux at SST81 qns (:,:) = 0.0_wp 109 82 qsr (:,:) = rn_qsr0 110 83 ! 111 84 ENDIF 112 113 IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN114 !115 IF( kt <= nn_tau000 ) THEN ! Increase the stress to its nominal value116 ! ! during the first nn_tau000117 ! time-steps118 zfact = 0.5 * ( 1. - COS( rpi * REAL( kt, wp ) / REAL( nn_tau000, wp ) ) )119 zcoef = 1. / ( zrhoa * zcdrag )120 ztx = zfact * rn_utau0121 zty = zfact * rn_vtau0122 zmod = SQRT( ztx * ztx + zty * zty )123 utau(:,:) = ztx124 vtau(:,:) = zty125 taum(:,:) = zmod126 zmod = SQRT( zmod * zcoef )127 wndm(:,:) = zmod128 ENDIF129 ! ! update heat and fresh water fluxes130 ! ! as they may have been changed by131 ! sbcssr module132 emp (:,:) = rn_emp0 ! NB: qns changes with SST if emp /= 0133 sfx (:,:) = 0._wp134 qns (:,:) = rn_qns0 - emp(:,:) * sst_m(:,:) * rcp135 qsr (:,:) = rn_qsr0136 !137 ENDIF138 !139 !SF END sbc ana140 !SF -----------141 85 142 86 END SUBROUTINE usr_def_sbc
Note: See TracChangeset
for help on using the changeset viewer.