Changeset 5389
- Timestamp:
- 2015-06-10T07:54:22+02:00 (9 years ago)
- Location:
- branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 2 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
r5123 r5389 177 177 LOGICAL, PUBLIC :: ln_sco !: s-coordinate or hybrid z-s coordinate 178 178 LOGICAL, PUBLIC :: ln_isfcav !: presence of ISF 179 LOGICAL, PUBLIC :: ln_read_zenv !: whether to read zenv or calculate it 179 180 180 181 !! All coordinates … … 245 246 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hift , hifu !: and quasi-uniform spacing t--u points (m) 246 247 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rx1 !: Maximum grid stiffness ratio 248 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: zenv !: Envelope Bathymetry 247 249 248 250 !!---------------------------------------------------------------------- … … 392 394 & tmask_i(jpi,jpj) , umask_i(jpi,jpj), vmask_i(jpi,jpj), fmask_i(jpi,jpj), & 393 395 & bmask(jpi,jpj) , & 394 & mbkt (jpi,jpj) , mbku (jpi,jpj) , mbkv(jpi,jpj) , STAT=ierr(9) )396 & mbkt (jpi,jpj) , mbku (jpi,jpj) , mbkv(jpi,jpj) , zenv(jpi,jpj) , STAT=ierr(9) ) 395 397 396 398 ! (ISF) Allocation of basic array -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r4990 r5389 146 146 & ppa2, ppkth2, ppacr2 147 147 NAMELIST/namcla/ nn_cla 148 NAMELIST/namrun/ ln_rstdate, cn_rst_dir 149 148 150 #if defined key_netcdf4 149 151 NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip … … 170 172 WRITE(numout,*) ' file prefix restart input cn_ocerst_in= ', cn_ocerst_in 171 173 WRITE(numout,*) ' file prefix restart output cn_ocerst_out= ', cn_ocerst_out 174 WRITE(numout,*) ' restart directory cn_rst_dir = ', cn_rst_dir 172 175 WRITE(numout,*) ' restart logical ln_rstart = ', ln_rstart 173 176 WRITE(numout,*) ' start with forward time step nn_euler = ', nn_euler … … 179 182 WRITE(numout,*) ' initial state output nn_istate = ', nn_istate 180 183 WRITE(numout,*) ' frequency of restart file nn_stock = ', nn_stock 184 WRITE(numout,*) ' use date in restart name ln_rstdate = ', ln_rstdate 181 185 WRITE(numout,*) ' frequency of output file nn_write = ', nn_write 182 186 WRITE(numout,*) ' multi file dimgout ln_dimgnnn = ', ln_dimgnnn -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r5120 r5389 102 102 INTEGER :: ios 103 103 ! 104 NAMELIST/namzgr/ ln_zco, ln_zps, ln_sco, ln_isfcav 104 NAMELIST/namzgr/ ln_zco, ln_zps, ln_sco, ln_isfcav, ln_read_zenv 105 105 !!---------------------------------------------------------------------- 106 106 ! … … 125 125 WRITE(numout,*) ' s- or hybrid z-s-coordinate ln_sco = ', ln_sco 126 126 WRITE(numout,*) ' ice shelf cavities ln_isfcav = ', ln_isfcav 127 WRITE(numout,*) ' Read zenv from Bathy T/F ln_read_zenv = ', ln_read_zenv 127 128 ENDIF 128 129 … … 540 541 CALL iom_get ( inum, jpdom_data, 'Bathymetry' , bathy, lrowattr=ln_use_jattr ) 541 542 END IF 543 IF ( ln_read_zenv ) THEN ! Whether we should read zenv or not 544 CALL iom_get ( inum, jpdom_data, 'zenv', zenv ) 545 ENDIF 542 546 CALL iom_close( inum ) 543 547 ! … … 1818 1822 ! 1819 1823 REAL(wp), POINTER, DIMENSION(:,: ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 1820 REAL(wp), POINTER, DIMENSION(:,: ) :: z env, ztmp, zmsk, zri, zrj, zhbat1824 REAL(wp), POINTER, DIMENSION(:,: ) :: ztmp, zmsk, zri, zrj, zhbat 1821 1825 1822 1826 NAMELIST/namzgr_sco/ln_s_sh94, ln_s_sf12, ln_sigcrit, rn_sbot_min, rn_sbot_max, rn_hc, rn_rmax,rn_theta, & … … 1826 1830 IF( nn_timing == 1 ) CALL timing_start('zgr_sco') 1827 1831 ! 1828 CALL wrk_alloc( jpi, jpj, z env, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 )1832 CALL wrk_alloc( jpi, jpj, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 1829 1833 ! 1830 1834 REWIND( numnam_ref ) ! Namelist namzgr_sco in reference namelist : Sigma-stretching parameters … … 1880 1884 ! ! ============================= 1881 1885 ! use r-value to create hybrid coordinates 1886 scosrf(:,:) = 0._wp ! ocean surface depth (here zero: no under ice-shelf sea) 1887 scobot(:,:) = bathy(:,:) ! ocean bottom depth 1888 IF( ln_read_zenv) THEN 1889 WRITE(numout,*) ' Zenv is not calculated but read from Bathy File ln_read_zenv = ', ln_read_zenv 1890 ELSE 1882 1891 zenv(:,:) = bathy(:,:) 1883 1892 ! … … 1901 1910 ! 1902 1911 ! smooth the bathymetry (if required) 1903 scosrf(:,:) = 0._wp ! ocean surface depth (here zero: no under ice-shelf sea)1904 scobot(:,:) = bathy(:,:) ! ocean bottom depth1905 1912 ! 1906 1913 jl = 0 … … 1966 1973 END DO ! End loop ! 1967 1974 ! ! ================ ! 1975 1976 ENDIF ! End of IF Block for reading in zenv 1977 CALL lbc_lnk( zenv, 'T', 1._wp, 'no0' ) 1968 1978 DO jj = 1, jpj 1969 1979 DO ji = 1, jpi … … 2241 2251 END DO 2242 2252 ! 2243 CALL wrk_dealloc( jpi, jpj, zenv,ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 )2253 CALL wrk_dealloc( jpi, jpj, ztmp, zmsk, zri, zrj, zhbat , ztmpi1, ztmpi2, ztmpj1, ztmpj2 ) 2244 2254 ! 2245 2255 IF( nn_timing == 1 ) CALL timing_stop('zgr_sco') -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
r4990 r5389 27 27 CHARACTER(lc) :: cn_ocerst_in !: suffix of ocean restart name (input) 28 28 CHARACTER(lc) :: cn_ocerst_out !: suffix of ocean restart name (output) 29 CHARACTER(lc) :: cn_rst_dir = "./"!: restart directory 29 30 LOGICAL :: ln_rstart !: start from (F) rest or (T) a restart file 31 LOGICAL :: ln_rstdate !: Use calendar date rather than time-step in restart names 30 32 INTEGER :: nn_no !: job number 31 33 INTEGER :: nn_rstctl !: control of the time step (0, 1 or 2) -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r4990 r5389 55 55 !!---------------------------------------------------------------------- 56 56 INTEGER, INTENT(in) :: kt ! ocean time-step 57 INTEGER :: iyear, imonth, iday 58 REAL (wp) :: zsec 57 59 !! 58 60 CHARACTER(LEN=20) :: clkt ! ocean time-step deine as a character 59 61 CHARACTER(LEN=50) :: clname ! ice output restart file name 62 CHARACTER(len=150) :: clpath ! full path to ocean output restart file 60 63 !!---------------------------------------------------------------------- 61 64 ! … … 74 77 IF( kt == nitrst - 1 .OR. nstock == 1 .OR. ( kt == nitend .AND. .NOT. lrst_oce ) ) THEN 75 78 ! beware of the format used to write kt (default is i8.8, that should be large enough...) 76 IF( nitrst > 999999999 ) THEN ; WRITE(clkt, * ) nitrst 77 ELSE ; WRITE(clkt, '(i8.8)') nitrst 79 IF ( ln_rstdate ) THEN 80 CALL ju2ymds( fjulday + rdttra(1) / rday, iyear, imonth, iday, zsec) 81 WRITE(clkt, '(i4.4,2i2.2)') iyear, imonth, iday 82 ELSE 83 IF( nitrst > 999999999 ) THEN ; WRITE(clkt, * ) nitrst 84 ELSE ; WRITE(clkt, '(i8.8)') nitrst 85 ENDIF 78 86 ENDIF 79 87 ! create the file 80 88 clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_"//TRIM(cn_ocerst_out) 89 clpath = TRIM(cn_rst_dir) 90 IF( clpath(LEN_TRIM(clpath):) /= '/' ) THEN 91 clpath = TRIM(clpath) // '/' 92 ENDIF 81 93 IF(lwp) THEN 82 94 WRITE(numout,*) 83 95 SELECT CASE ( jprstlib ) 84 CASE ( jprstdimg ) ; WRITE(numout,*) ' open ocean restart binary file: ' //clname85 CASE DEFAULT ; WRITE(numout,*) ' open ocean restart NetCDF file: ' //clname96 CASE ( jprstdimg ) ; WRITE(numout,*) ' open ocean restart binary file: ',TRIM(clpath)//clname 97 CASE DEFAULT ; WRITE(numout,*) ' open ocean restart NetCDF file: ',TRIM(clpath)//clname 86 98 END SELECT 87 99 IF ( snc4set%luse ) WRITE(numout,*) ' opened for NetCDF4 chunking and compression' … … 91 103 ENDIF 92 104 ! 93 CALL iom_open( clname, numrow, ldwrt = .TRUE., kiolib = jprstlib )105 CALL iom_open( TRIM(clpath)//TRIM(clname), numrow, ldwrt = .TRUE., kiolib = jprstlib ) 94 106 lrst_oce = .TRUE. 95 107 ENDIF -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r5120 r5389 108 108 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sprecip !: solid precipitation [Kg/m2/s] 109 109 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr_i !: ice fraction = 1 - lead fraction (between 0 to 1) 110 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: pressnow !: UKMO SHELF pressure 111 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: apgu !: UKMO SHELF pressure forcing 112 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: apgv !: UKMO SHELF pressure forcing 110 113 #if defined key_cpl_carbon_cycle 111 114 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: atm_co2 !: atmospheric pCO2 [ppm] … … 152 155 ! 153 156 ALLOCATE( tprecip(jpi,jpj) , sprecip(jpi,jpj) , fr_i(jpi,jpj) , & 157 & pressnow(jpi,jpj), apgu(jpi,jpj) , apgv(jpi,jpj) , & 154 158 #if defined key_cpl_carbon_cycle 155 159 & atm_co2(jpi,jpj) , & -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
r4990 r5389 28 28 PUBLIC sbc_flx ! routine called by step.F90 29 29 30 INTEGER , PARAMETER :: jpfld = 5! maximum number of files to read30 INTEGER , PARAMETER :: jpfld = 6 ! maximum number of files to read 31 31 INTEGER , PARAMETER :: jp_utau = 1 ! index of wind stress (i-component) file 32 32 INTEGER , PARAMETER :: jp_vtau = 2 ! index of wind stress (j-component) file … … 34 34 INTEGER , PARAMETER :: jp_qsr = 4 ! index of solar heat file 35 35 INTEGER , PARAMETER :: jp_emp = 5 ! index of evaporation-precipation file 36 INTEGER , PARAMETER :: jp_press = 6 ! index of pressure for UKMO shelf fluxes 36 37 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf ! structure of input fields (file informations, fields read) 38 LOGICAL , PUBLIC :: ln_shelf_flx = .FALSE. ! UKMO SHELF specific flux flag 39 INTEGER :: jpfld_local ! maximum number of files to read (locally modified depending on ln_shelf_flx) 37 40 38 41 !! * Substitutions … … 82 85 REAL(wp) :: zcdrag = 1.5e-3 ! drag coefficient 83 86 REAL(wp) :: ztx, zty, zmod, zcoef ! temporary variables 87 REAL :: cs ! UKMO SHELF: Friction co-efficient at surface 88 REAL :: totwindspd ! UKMO SHELF: Magnitude of wind speed vector 89 90 REAL(wp) :: rhoa = 1.22 ! Air density kg/m3 91 REAL(wp) :: cdrag = 1.5e-3 ! drag coefficient 84 92 !! 85 93 CHARACTER(len=100) :: cn_dir ! Root directory for location of flx files 86 94 TYPE(FLD_N), DIMENSION(jpfld) :: slf_i ! array of namelist information structures 87 TYPE(FLD_N) :: sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp ! informations about the fields to be read 88 NAMELIST/namsbc_flx/ cn_dir, sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp 95 TYPE(FLD_N) :: sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp, sn_press ! informations about the fields to be read 96 LOGICAL :: ln_foam_flx = .FALSE. ! UKMO FOAM specific flux flag 97 NAMELIST/namsbc_flx/ cn_dir, sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp, & 98 & ln_foam_flx, sn_press, ln_shelf_flx 89 99 !!--------------------------------------------------------------------- 90 100 ! … … 109 119 slf_i(jp_emp ) = sn_emp 110 120 ! 111 ALLOCATE( sf(jpfld), STAT=ierror ) ! set sf structure 121 IF( ln_shelf_flx ) slf_i(jp_press) = sn_press 122 123 ! define local jpfld depending on shelf_flx logical 124 IF( ln_shelf_flx ) THEN 125 jpfld_local = jpfld 126 ELSE 127 jpfld_local = jpfld-1 128 ENDIF 129 ! 130 ALLOCATE( sf(jpfld_local), STAT=ierror ) ! set sf structure 112 131 IF( ierror > 0 ) THEN 113 132 CALL ctl_stop( 'sbc_flx: unable to allocate sf structure' ) ; RETURN … … 132 151 ENDIF 133 152 !CDIR COLLAPSE 153 !!UKMO SHELF effect of atmospheric pressure on SSH 154 ! If using ln_apr_dyn, this is done there so don't repeat here. 155 IF( ln_shelf_flx .AND. .NOT. ln_apr_dyn) THEN 156 DO jj = 1, jpjm1 157 DO ji = 1, jpim1 158 apgu(ji,jj) = (-1.0/rau0)*(sf(jp_press)%fnow(ji+1,jj,1)-sf(jp_press)%fnow(ji,jj,1))/e1u(ji,jj) 159 apgv(ji,jj) = (-1.0/rau0)*(sf(jp_press)%fnow(ji,jj+1,1)-sf(jp_press)%fnow(ji,jj,1))/e2v(ji,jj) 160 END DO 161 END DO 162 ENDIF ! ln_shelf_flx 134 163 DO jj = 1, jpj ! set the ocean fluxes from read fields 135 164 DO ji = 1, jpi 136 utau(ji,jj) = sf(jp_utau)%fnow(ji,jj,1) 137 vtau(ji,jj) = sf(jp_vtau)%fnow(ji,jj,1) 138 qns (ji,jj) = sf(jp_qtot)%fnow(ji,jj,1) - sf(jp_qsr)%fnow(ji,jj,1) 139 emp (ji,jj) = sf(jp_emp )%fnow(ji,jj,1) 165 IF( ln_shelf_flx ) THEN 166 !! UKMO SHELF - need atmospheric pressure to calculate Haney forcing 167 pressnow(ji,jj) = sf(jp_press)%fnow(ji,jj,1) 168 !! UKMO SHELF flux files contain wind speed not wind stress 169 totwindspd = sqrt((sf(jp_utau)%fnow(ji,jj,1))**2.0 + (sf(jp_vtau)%fnow(ji,jj,1))**2.0) 170 cs = 0.63 + (0.066 * totwindspd) 171 utau(ji,jj) = cs * (rhoa/rau0) * sf(jp_utau)%fnow(ji,jj,1) * totwindspd 172 vtau(ji,jj) = cs * (rhoa/rau0) * sf(jp_vtau)%fnow(ji,jj,1) * totwindspd 173 ELSE 174 utau(ji,jj) = sf(jp_utau)%fnow(ji,jj,1) 175 vtau(ji,jj) = sf(jp_vtau)%fnow(ji,jj,1) 176 ENDIF 177 qsr (ji,jj) = sf(jp_qsr )%fnow(ji,jj,1) 178 IF( ln_foam_flx .OR. ln_shelf_flx ) THEN 179 !! UKMO FOAM flux files contain non-solar heat flux (qns) rather than total heat flux (qtot) 180 qns (ji,jj) = sf(jp_qtot)%fnow(ji,jj,1) 181 !! UKMO FOAM flux files contain the net DOWNWARD freshwater flux P-E rather then E-P 182 emp (ji,jj) = -1. * sf(jp_emp )%fnow(ji,jj,1) 183 ELSE 184 qns (ji,jj) = sf(jp_qtot)%fnow(ji,jj,1) - sf(jp_qsr)%fnow(ji,jj,1) 185 emp (ji,jj) = sf(jp_emp )%fnow(ji,jj,1) 186 ENDIF 140 187 END DO 141 188 END DO … … 143 190 qns(:,:) = qns(:,:) - emp(:,:) * sst_m(:,:) * rcp ! mass flux is at SST 144 191 ! 192 193 !! UKMO FOAM wind fluxes need lbc_lnk calls owing to a bug in interp.exe 194 IF( ln_foam_flx ) THEN 195 CALL lbc_lnk( utau(:,:), 'U', -1. ) 196 CALL lbc_lnk( vtau(:,:), 'V', -1. ) 197 ENDIF 198 145 199 ! ! module of wind stress and wind speed at T-point 146 200 zcoef = 1. / ( zrhoa * zcdrag ) … … 162 216 WRITE(numout,*) 163 217 WRITE(numout,*) ' read daily momentum, heat and freshwater fluxes OK' 164 DO jf = 1, jpfld 218 DO jf = 1, jpfld_local 165 219 IF( jf == jp_utau .OR. jf == jp_vtau ) zfact = 1. 166 220 IF( jf == jp_qtot .OR. jf == jp_qsr ) zfact = 0.1 -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90
r4990 r5389 42 42 LOGICAL :: ln_sssr_bnd ! flag to bound erp term 43 43 REAL(wp) :: rn_sssr_bnd ! ABS(Max./Min.) value of erp term [mm/day] 44 LOGICAL :: ln_UKMO_haney ! UKMO specific flag to calculate Haney forcing 44 45 45 46 REAL(wp) , ALLOCATABLE, DIMENSION(:) :: buffer ! Temporary buffer for exchange … … 79 80 INTEGER :: ierror ! return error code 80 81 !! 82 REAL(wp) :: sst1,sst2 ! sea surface temperature 83 REAL(wp) :: e_sst1, e_sst2 ! saturation vapour pressure 84 REAL(wp) :: qs1,qs2 ! specific humidity 85 REAL(wp) :: pr_tmp ! temporary variable for pressure 86 87 REAL(wp), DIMENSION(jpi,jpj) :: hny_frc1 ! Haney forcing for sensible heat, correction for latent heat 88 REAL(wp), DIMENSION(jpi,jpj) :: hny_frc2 ! Haney forcing for sensible heat, correction for latent heat 89 !! 81 90 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files 82 91 TYPE(FLD_N) :: sn_sst, sn_sss ! informations about the fields to be read … … 95 104 ! 96 105 IF( nn_sstr == 1 ) THEN !* Temperature restoring term 97 DO jj = 1, jpj 98 DO ji = 1, jpi 99 zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) ) 100 qns(ji,jj) = qns(ji,jj) + zqrp 101 qrp(ji,jj) = zqrp 102 END DO 103 END DO 106 IF( ln_UKMO_haney ) THEN 107 DO jj = 1, jpj 108 DO ji = 1, jpi 109 sst1 = sst_m(ji,jj) 110 sst2 = sf_sst(1)%fnow(ji,jj,1) 111 e_sst1 = 10**((0.7859+0.03477*sst1)/(1.+0.00412*sst1)) 112 e_sst2 = 10**((0.7859+0.03477*sst2)/(1.+0.00412*sst2)) 113 pr_tmp = 0.01*pressnow(ji,jj) !pr_tmp = 1012.0 114 qs1 = (0.62197*e_sst1)/(pr_tmp-0.378*e_sst1) 115 qs2 = (0.62197*e_sst2)/(pr_tmp-0.378*e_sst2) 116 hny_frc1(ji,jj) = sst1-sst2 117 hny_frc2(ji,jj) = qs1-qs2 118 !Might need to mask off land points. 119 hny_frc1(ji,jj)=-hny_frc1(ji,jj)*wndm(ji,jj)*1.42 120 hny_frc2(ji,jj)=-hny_frc2(ji,jj)*wndm(ji,jj)*4688.0 121 qns(ji,jj)=qns(ji,jj)+hny_frc1(ji,jj)+hny_frc2(ji,jj) 122 qrp(ji,jj) = 0.e0 123 END DO 124 END DO 125 ELSE 126 DO jj = 1, jpj 127 DO ji = 1, jpi 128 zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) ) 129 qns(ji,jj) = qns(ji,jj) + zqrp 130 qrp(ji,jj) = zqrp 131 END DO 132 END DO 133 ENDIF 104 134 CALL iom_put( "qrp", qrp ) ! heat flux damping 105 135 ENDIF … … 163 193 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files 164 194 TYPE(FLD_N) :: sn_sst, sn_sss ! informations about the fields to be read 165 NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, rn_dqdt, rn_deds, sn_sst, sn_sss, ln_sssr_bnd, rn_sssr_bnd 195 NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, rn_dqdt, rn_deds, sn_sst, sn_sss, ln_sssr_bnd, rn_sssr_bnd, ln_UKMO_haney 166 196 INTEGER :: ios 167 197 !!---------------------------------------------------------------------- … … 189 219 WRITE(numout,*) ' flag to bound erp term ln_sssr_bnd = ', ln_sssr_bnd 190 220 WRITE(numout,*) ' ABS(Max./Min.) erp threshold rn_sssr_bnd = ', rn_sssr_bnd, ' mm/day' 221 WRITE(numout,*) ' Haney forcing ln_UKMO_haney = ', ln_UKMO_haney 191 222 ENDIF 192 223 ! -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
r5120 r5389 24 24 USE trd_oce ! trends: ocean variables 25 25 USE trdtra ! trends manager: tracers 26 USE tradwl ! solar radiation penetration (downwell method) 26 27 ! 27 28 USE in_out_manager ! I/O manager … … 141 142 142 143 !!gm IF( .NOT.ln_traqsr ) qsr(:,:) = 0.e0 ! no solar radiation penetration 143 IF( .NOT.ln_traqsr ) THEN ! no solar radiation penetration144 IF( .NOT.ln_traqsr .and. .NOT.ln_tradwl ) THEN ! no solar radiation penetration 144 145 qns(:,:) = qns(:,:) + qsr(:,:) ! total heat flux in qns 145 146 qsr(:,:) = 0.e0 ! qsr set to zero -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/step.F90
r5147 r5389 100 100 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 101 101 IF( lk_tide ) CALL sbc_tide( kstp ) 102 IF( lk_bdy ) CALL bdy_dta ( kstp, time_offset=+1 ) ! update dynamic & tracer data at open boundaries103 102 104 103 CALL sbc ( kstp ) ! Sea Boundary Condition (including sea-ice) 105 104 ! clem: moved here for bdy ice purpose 105 IF ( ln_shelf_flx .AND. & 106 & .NOT. ln_apr_dyn) CALL inv( kstp ) ! modification to vel from atmos pres 107 IF( lk_bdy ) CALL bdy_dta ( kstp, time_offset=+1 ) ! update dynamic & tracer data at open boundaries 106 108 107 109 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 243 245 CALL tra_sbc ( kstp ) ! surface boundary condition 244 246 IF( ln_traqsr ) CALL tra_qsr ( kstp ) ! penetrative solar radiation qsr 247 IF( ln_tradwl ) CALL tra_dwl ( kstp ) ! Polcoms Style Short Wave Radiation 245 248 IF( ln_trabbc ) CALL tra_bbc ( kstp ) ! bottom heat flux 246 249 IF( lk_trabbl ) CALL tra_bbl ( kstp ) ! advective (and/or diffusive) bottom boundary layer scheme -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r4990 r5389 25 25 USE sbcrnf ! surface boundary condition: runoff variables 26 26 USE sbccpl ! surface boundary condition: coupled formulation (call send at end of step) 27 USE sbcflx ! surface boundary condition: Fluxes 27 28 USE sbc_oce ! surface boundary condition: ocean 28 29 USE sbctide ! Tide initialisation 29 30 30 31 USE traqsr ! solar radiation penetration (tra_qsr routine) 32 USE tradwl ! POLCOMS style solar radiation (tra_dwl routine) 31 33 USE trasbc ! surface boundary condition (tra_sbc routine) 32 34 USE trabbc ! bottom boundary condition (tra_bbc routine) … … 61 63 62 64 USE sshwzv ! vertical velocity and ssh (ssh_nxt routine) 65 USE inv_bar_vel_mod ! Atmos press effect on vel 63 66 ! (ssh_swp routine) 64 67 ! (wzv routine) -
branches/UKMO/2015_CO6_CO5_zenv_wr_direct_dwl_temp/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90
r4623 r5389 27 27 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: etot3 !: light absortion coefficient 28 28 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: facvol !: volume for degraded regions 29 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:) :: rlambda2 !: Lambda2 for downwell version of Short wave Radiation 30 REAL(wp), PUBLIC :: rlambda !: Lambda for downwell version of Short wave Radiation 29 31 30 32 #if defined key_top … … 76 78 !! *** trc_oce_alloc *** 77 79 !!---------------------------------------------------------------------- 78 INTEGER :: ierr( 2) ! Local variables80 INTEGER :: ierr(3) ! Local variables 79 81 !!---------------------------------------------------------------------- 80 82 ierr(:) = 0 81 83 ALLOCATE( etot3 (jpi,jpj,jpk), STAT=ierr(1) ) 82 84 IF( lk_degrad) ALLOCATE( facvol(jpi,jpj,jpk), STAT=ierr(2) ) 85 ALLOCATE( rlambda2(jpi,jpj), STAT=ierr(3) ) 83 86 trc_oce_alloc = MAXVAL( ierr ) 84 87 ! 85 IF( trc_oce_alloc /= 0 ) CALL ctl_warn('trc_oce_alloc: failed to allocate etot3 array')88 IF( trc_oce_alloc /= 0 ) CALL ctl_warn('trc_oce_alloc: failed to allocate etot3, facvol or rlambda2 array') 86 89 END FUNCTION trc_oce_alloc 87 90
Note: See TracChangeset
for help on using the changeset viewer.