Changeset 1735
- Timestamp:
- 2009-11-16T16:39:43+01:00 (14 years ago)
- Location:
- trunk/NEMO
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OFF_SRC/DOM/domain.F90
r1715 r1735 244 244 nwrite = nitend 245 245 nwarn = nwarn + 1 246 ENDIF247 248 SELECT CASE ( nleapy ) ! Choose calendar for IOIPSL249 CASE ( 1 )250 CALL ioconf_calendar('gregorian')251 IF(lwp) WRITE(numout,*) ' The IOIPSL calendar is "gregorian", i.e. leap year'252 CASE ( 0 )253 CALL ioconf_calendar('noleap')254 IF(lwp) WRITE(numout,*) ' The IOIPSL calendar is "noleap", i.e. no leap year'255 CASE ( 30 )256 CALL ioconf_calendar('360d')257 IF(lwp) WRITE(numout,*) ' The IOIPSL calendar is "360d", i.e. 360 days in a year'258 END SELECT259 260 SELECT CASE ( nleapy ) ! year=raajj*days day=rjjhh*hours hour=rhhmm*minutes etc ...261 CASE ( 1 )262 raajj = 365.25263 raass = raajj * rjjss264 rmoss = raass/raamo265 CASE ( 0 )266 raajj = 365.267 raass = raajj * rjjss268 rmoss = raass/raamo269 CASE DEFAULT270 raajj = FLOAT( nleapy ) * raamo271 raass = raajj * rjjss272 rmoss = FLOAT( nleapy ) * rjjss273 END SELECT274 IF(lwp) THEN275 WRITE(numout,*)276 WRITE(numout,*) ' nb of days per year raajj = ', raajj,' days'277 WRITE(numout,*) ' nb of seconds per year raass = ', raass, ' s'278 WRITE(numout,*) ' nb of seconds per month rmoss = ', rmoss, ' s'279 246 ENDIF 280 247 -
trunk/NEMO/OFF_SRC/dtadyn.F90
r1699 r1735 44 44 nficdyn = 2 ! number of dynamical fields 45 45 46 CHARACTER(len=45) :: & 47 cfile_grid_T = 'dyna_grid_T.nc', & !: name of the grid_T file 48 cfile_grid_U = 'dyna_grid_U.nc', & !: name of the grid_U file 49 cfile_grid_V = 'dyna_grid_V.nc', & !: name of the grid_V file 50 cfile_grid_W = 'dyna_grid_W.nc' !: name of the grid_W file 51 52 REAL(wp) :: & 53 rnspdta , & !: number of time step per 2 consecutives data 54 rnspdta2 !: rnspdta * 0.5 55 46 56 INTEGER :: & 47 57 ndyn1, ndyn2 , & … … 49 59 numfl_t, numfl_u, & 50 60 numfl_v, numfl_w 51 52 CHARACTER(len=45) :: &53 cfile_grid_T = 'dyna_grid_T.nc', & !: name of the grid_T file54 cfile_grid_U = 'dyna_grid_U.nc', & !: name of the grid_U file55 cfile_grid_V = 'dyna_grid_V.nc', & !: name of the grid_V file56 cfile_grid_W = 'dyna_grid_W.nc' !: name of the grid_W file57 61 58 62 REAL(wp), DIMENSION(jpi,jpj,jpk,2) :: & … … 161 165 ENDIF 162 166 163 164 zpdtan = raass / rdt 165 zpdtpe = zpdtan / FLOAT( ndtadyn ) 166 zdemi = zpdtpe * 0.5 167 zt = ( FLOAT (kt) + zdemi ) / zpdtpe 168 167 zt = ( FLOAT (kt) + rnspdta2 ) / rnspdta 169 168 izt = INT( zt ) 170 169 zweigh = zt - FLOAT( INT(zt) ) … … 556 555 !! * Local declarations 557 556 557 REAL(wp) :: znspyr !: number of time step per year 558 558 559 559 NAMELIST/namdyn/ ndtadyn, ndtatot, nsptint, nficdyn, lperdyn, & … … 586 586 WRITE(numout,*) ' ' 587 587 ENDIF 588 589 znspyr = nyear_len(1) * rday / rdt 590 rnspdta = znspyr / FLOAT( ndtadyn ) 591 rnspdta2 = rnspdta * 0.5 588 592 589 593 END SUBROUTINE dta_dyn_init -
trunk/NEMO/OFF_SRC/phycst.F90
r1152 r1735 24 24 rsiyea , & !: sideral year (s) 25 25 rsiday , & !: sideral day (s) 26 raajj = 365._wp , & !: number of days in one year27 26 raamo = 12._wp , & !: number of months in one year 28 27 rjjhh = 24._wp , & !: number of hours in one day 29 28 rhhmm = 60._wp , & !: number of minutes in one hour 30 29 rmmss = 60._wp , & !: number of seconds in one minute 31 raass , & !: number of seconds in one year32 rmoss , & !: number of seconds in one month33 30 rjjss , & !: number of seconds in one day 34 31 !!! omega = 7.292115083046061e-5_wp , & !: change the last digit! … … 40 37 rtt = 273.16_wp , & !: triple point of temperature (Kelvin) 41 38 rt0 = 273.15_wp , & !: freezing point of water (Kelvin) 42 rt0_snow = 273.15_wp , & !: melting point of snow (Kelvin)43 rt0_ice = 273.05_wp , & !: melting point of ice (Kelvin)44 39 rau0 = 1020._wp , & !: volumic mass of reference (kg/m3) 45 40 rauw = 1000._wp , & !: density of pure water (kg/m3) … … 47 42 ro0cpr !: = 1. / ( rau0 * rcp ) 48 43 49 REAL(wp), PUBLIC :: & !:50 rcdsn = 0.22_wp , & !: conductivity of the snow51 rcdic = 2.034396_wp , & !: conductivity of the ice52 rcpsn = 6.9069e+5_wp, & !: density times specific heat for snow53 rcpic = 1.8837e+6_wp, & !: volumetric latent heat fusion of sea ice54 xlsn = 110.121e+6_wp , & !: volumetric latent heat fusion of snow55 xlic = 300.33e+6_wp , & !: volumetric latent heat fusion of ice56 xsn = 2.8e+6 , & !: latent heat of sublimation of snow57 rhoic = 900._wp , & !: density of sea ice (kg/m3)58 rhosn = 330._wp , & !: density of snow (kg/m3)59 emic = 0.97_wp , & !: emissivity of snow or ice60 sice = 6.0_wp , & !: salinity of ice (psu)61 soce = 34.7_wp , & !: salinity of sea (psu)62 cevap = 2.5e+6_wp , & !: latent heat of evaporation (water)63 srgamma = 0.9_wp , & !: correction factor for solar radiation (Oberhuber, 1974)64 vkarmn = 0.4_wp , & !: von Karman constant65 stefan = 5.67e-8_wp !: Stefan-Boltzmann constant66 44 !!---------------------------------------------------------------------- 67 45 !! OPA 9.0 , LOCEAN-IPSL (2005) … … 134 112 IF(lwp) WRITE(numout,*) ' omega omega = ', omega, ' s-1' 135 113 136 rjjss = rjjhh * rhhmm * rmmss137 114 IF(lwp) WRITE(numout,*) 138 IF(lwp) WRITE(numout,*) ' nb of months per year raamo = ', raamo, ' months'139 115 IF(lwp) WRITE(numout,*) ' nb of hours per day rjjhh = ', rjjhh, ' hours' 140 116 IF(lwp) WRITE(numout,*) ' nb of minutes per hour rhhmm = ', rhhmm, ' mn' 141 117 IF(lwp) WRITE(numout,*) ' nb of seconds per minute rmmss = ', rmmss, ' s' 142 IF(lwp) WRITE(numout,*) ' nb of seconds per day rjjss = ', rjjss, ' s'143 118 144 119 IF(lwp) WRITE(numout,*) … … 149 124 IF(lwp) WRITE(numout,*) ' triple point of temperature rtt = ', rtt , ' K' 150 125 IF(lwp) WRITE(numout,*) ' freezing point of water rt0 = ', rt0 , ' K' 151 IF(lwp) WRITE(numout,*) ' melting point of snow rt0_snow = ', rt0_snow, ' K'152 IF(lwp) WRITE(numout,*) ' melting point of ice rt0_ice = ', rt0_ice , ' K'153 126 154 127 ro0cpr = 1. / ( rau0 * rcp ) … … 161 134 IF(lwp) THEN 162 135 WRITE(numout,*) 163 WRITE(numout,*) ' thermal conductivity of the snow = ', rcdsn , ' J/s/m/K'164 WRITE(numout,*) ' thermal conductivity of the ice = ', rcdic , ' J/s/m/K'165 WRITE(numout,*) ' density times specific heat for snow = ', rcpsn , ' J/m^3/K'166 WRITE(numout,*) ' density times specific heat for ice = ', rcpic , ' J/m^3/K'167 WRITE(numout,*) ' volumetric latent heat fusion of sea ice = ', xlic , ' J/m'168 WRITE(numout,*) ' volumetric latent heat fusion of snow = ', xlsn , ' J/m'169 WRITE(numout,*) ' latent heat of sublimation of snow = ', xsn , ' J/kg'170 WRITE(numout,*) ' density of sea ice = ', rhoic , ' kg/m^3'171 WRITE(numout,*) ' density of snow = ', rhosn , ' kg/m^3'172 WRITE(numout,*) ' emissivity of snow or ice = ', emic173 WRITE(numout,*) ' salinity of ice = ', sice , ' psu'174 WRITE(numout,*) ' salinity of sea = ', soce , ' psu'175 WRITE(numout,*) ' latent heat of evaporation (water) = ', cevap , ' J/m^3'176 WRITE(numout,*) ' correction factor for solar radiation = ', srgamma177 WRITE(numout,*) ' von Karman constant = ', vkarmn178 WRITE(numout,*) ' Stefan-Boltzmann constant = ', stefan , ' J/s/m^2/K^4'179 180 136 WRITE(numout,*) 181 137 WRITE(numout,*) ' conversion: degre ==> radian rad = ', rad 182 183 138 WRITE(numout,*) 184 139 WRITE(numout,*) ' smallest real computer value rsmall = ', rsmall -
trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90
r1678 r1735 39 39 40 40 REAL(wp) :: & 41 xconv = 0.01/3600 !: coefficients for conversion 41 xconv = 0.01/3600 !: coefficients for conversion 42 43 INTEGER :: nspyr !: number of timestep per year 42 44 43 45 #if defined key_cpl_carbon_cycle … … 68 70 !!--------------------------------------------------------------------- 69 71 INTEGER, INTENT(in) :: kt 70 INTEGER :: ji, jj, jrorr , nspyr72 INTEGER :: ji, jj, jrorr 71 73 REAL(wp) :: ztc, ztc2, ztc3, zws, zkgwan 72 74 REAL(wp) :: zfld, zflu, zfld16, zflu16, zfact … … 89 91 ! ----------------------------------------------------- 90 92 91 nspyr = INT( raass/ rdt )93 nspyr = INT( n/ rdt ) 92 94 93 95 ! SURFACE CHEMISTRY (PCO2 AND [H+] IN … … 262 264 ENDIF 263 265 266 ! number of time step per year 267 nspyr = INT( nyear_len(1) * rday / rdt ) 268 264 269 #if defined key_cpl_carbon_cycle 265 270 ! Initialization of Flux of Carbon -
trunk/NEMO/TOP_SRC/PISCES/p4zlys.F90
r1678 r1735 37 37 REAL(wp) :: & 38 38 calcon = 1.03E-2 ! mean calcite concentration [Ca2+] in sea water [mole/kg solution] 39 40 INTEGER :: & 41 rmtss !: number of seconds per month 39 42 40 43 !!---------------------------------------------------------------------- … … 148 151 ! CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3], 149 152 ! AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION 150 zremco3 = zdispot / rm oss153 zremco3 = zdispot / rmtss 151 154 zco3(ji,jj,jk) = zco3(ji,jj,jk) + zremco3 * rfact 152 155 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * zremco3 … … 214 217 ENDIF 215 218 219 ! Number of seconds per month 220 rmtss = nyear_len(1) * rday / raamo 221 216 222 END SUBROUTINE p4z_lys_init 217 223 -
trunk/NEMO/TOP_SRC/PISCES/p4zprod.F90
r1562 r1735 50 50 tpp !: Total primary production 51 51 52 INTEGER :: nspyr !: number of timesteps per year 53 52 54 !!* Substitution 53 55 # include "domzgr_substitute.h90" … … 70 72 !!--------------------------------------------------------------------- 71 73 INTEGER, INTENT(in) :: kt, jnt 72 INTEGER :: ji, jj, jk , nspyr74 INTEGER :: ji, jj, jk 73 75 REAL(wp) :: zsilfac, zfact 74 76 REAL(wp) :: zprdiachl, zprbiochl, zsilim, ztn, zadap, zadap2 … … 107 109 zprbio (:,:,:) = 0.0 108 110 zysopt (:,:,:) = 0.0 109 110 nspyr = INT( raass / rdt )111 112 111 113 112 ! Computation of the optimal production … … 432 431 ENDIF 433 432 433 ! number of timesteps per year 434 nspyr = INT( nyear_len(1) * rday / rdt ) 435 434 436 rpis180 = rpi / 180. 435 437 texcret = 1.0 - excret -
trunk/NEMO/TOP_SRC/PISCES/p4zsed.F90
r1678 r1735 47 47 48 48 !! * Module variables 49 INTEGER :: & 50 numdust, & ! logical unit for surface fluxes data 51 nflx1 , nflx2, & ! first and second record used 49 INTEGER :: & 50 ryyss, & !: number of seconds per year 51 rmtss !: number of seconds per month 52 53 INTEGER :: & 54 numdust, & !: logical unit for surface fluxes data 55 nflx1 , nflx2, & !: first and second record used 52 56 nflx11, nflx12 ! ??? 53 57 REAL(wp), DIMENSION(jpi,jpj,2) :: & !: … … 103 107 IF( (jnt == 1) .and. ( ln_dustfer ) ) CALL p4z_sbc( kt ) 104 108 105 zstep = rfact2 / r jjss! Time step duration for the biology109 zstep = rfact2 / rday ! Time step duration for the biology 106 110 107 111 zirondep(:,:,:) = 0.e0 ! Initialisation of variables used to compute deposition … … 113 117 DO jj = 1, jpj 114 118 DO ji = 1, jpi 115 zirondep(ji,jj,1) = ( dustsolub * dust(ji,jj) / ( 55.85 * rm oss ) + 3.e-10 / raass ) &119 zirondep(ji,jj,1) = ( dustsolub * dust(ji,jj) / ( 55.85 * rmtss ) + 3.e-10 / ryyss ) & 116 120 & * rfact2 / fse3t(ji,jj,1) 117 zsidep (ji,jj) = 8.8 * 0.075 * dust(ji,jj) * rfact2 / ( fse3t(ji,jj,1) * 28.1 * rm oss )121 zsidep (ji,jj) = 8.8 * 0.075 * dust(ji,jj) * rfact2 / ( fse3t(ji,jj,1) * 28.1 * rmtss ) 118 122 END DO 119 123 END DO … … 123 127 124 128 DO jk = 2, jpkm1 125 zirondep(:,:,jk) = dust(:,:) / ( 10. * 55.85 * rm oss ) * rfact2 * 1.e-4129 zirondep(:,:,jk) = dust(:,:) / ( 10. * 55.85 * rmtss ) * rfact2 * 1.e-4 126 130 END DO 127 131 … … 159 163 DO ji = 1, jpi 160 164 ikt = MAX( mbathy(ji,jj)-1, 1 ) 161 zfact = e1t(ji,jj) * e2t(ji,jj) / r jjss* tmask_i(ji,jj)165 zfact = e1t(ji,jj) * e2t(ji,jj) / rday * tmask_i(ji,jj) 162 166 # if defined key_kriest 163 167 zsumsedsi = zsumsedsi + zfact * trn(ji,jj,ikt,jpdsi) * wscal (ji,jj,ikt) … … 199 203 #if ! defined key_sed 200 204 trn(ji,jj,ikt,jpsil) = trn(ji,jj,ikt,jpsil) + zconctmp & 201 & * ( 1.- ( sumdepsi + rivalkinput / r aass / 6. ) / zsumsedsi )205 & * ( 1.- ( sumdepsi + rivalkinput / ryyss / 6. ) / zsumsedsi ) 202 206 #endif 203 207 END DO … … 212 216 #if ! defined key_sed 213 217 trn(ji,jj,ikt,jptal) = trn(ji,jj,ikt,jptal) + zconctmp & 214 & * ( 1.- ( rivalkinput / r aass ) / zsumsedcal ) * 2.e0218 & * ( 1.- ( rivalkinput / ryyss ) / zsumsedcal ) * 2.e0 215 219 trn(ji,jj,ikt,jpdic) = trn(ji,jj,ikt,jpdic) + zconctmp & 216 & * ( 1.- ( rivalkinput / r aass ) / zsumsedcal )220 & * ( 1.- ( rivalkinput / ryyss ) / zsumsedcal ) 217 221 #endif 218 222 END DO … … 231 235 trn(ji,jj,ikt,jpdoc) = trn(ji,jj,ikt,jpdoc) & 232 236 & + ( zconctmp * wsbio4(ji,jj,ikt) + zconctmp2 * wsbio3(ji,jj,ikt) ) * zfact & 233 & * ( 1.- rivpo4input / (r aass * zsumsedpo4 ) )237 & * ( 1.- rivpo4input / (ryyss * zsumsedpo4 ) ) 234 238 #endif 235 239 trn(ji,jj,ikt,jpbfe) = trn(ji,jj,ikt,jpbfe) - trn(ji,jj,ikt,jpbfe) * wsbio4(ji,jj,ikt) * zfact … … 246 250 trn(ji,jj,ikt,jpdoc) = trn(ji,jj,ikt,jpdoc) & 247 251 & + ( zconctmp2 * wsbio3(ji,jj,ikt) ) & 248 & * zfact * ( 1.- rivpo4input / ( r aass * zsumsedpo4 ) )252 & * zfact * ( 1.- rivpo4input / ( ryyss * zsumsedpo4 ) ) 249 253 #endif 250 254 trn(ji,jj,ikt,jpsfe) = trn(ji,jj,ikt,jpsfe) & … … 282 286 zlim = ( 1.- xnanono3(ji,jj,jk) - xnanonh4(ji,jj,jk) ) 283 287 IF( zlim <= 0.2 ) zlim = 0.01 284 znitrpot(ji,jj,jk) = MAX( 0.e0, ( 0.6 * tgfunc(ji,jj,jk) - 2.15 ) / r jjss) &288 znitrpot(ji,jj,jk) = MAX( 0.e0, ( 0.6 * tgfunc(ji,jj,jk) - 2.15 ) / rday ) & 285 289 # if defined key_off_degrad 286 290 & * facvol(ji,jj,jk) & … … 565 569 566 570 571 ! Number of seconds per year and per month 572 ryyss = nyear_len(1) * rday 573 rmtss = ryyss / raamo 574 567 575 ! total atmospheric supply of Si 568 576 ! ------------------------------ … … 571 579 DO jj = 2, jpjm1 572 580 DO ji = fs_2, fs_jpim1 573 sumdepsi = sumdepsi + zdustmo(ji,jj,jm) / (12.*rm oss) * 8.8 &581 sumdepsi = sumdepsi + zdustmo(ji,jj,jm) / (12.*rmtss) * 8.8 & 574 582 & * 0.075/28.1 * e1t(ji,jj) * e2t(ji,jj) * tmask(ji,jj,1) * tmask_i(ji,jj) 575 583 END DO … … 582 590 DO jj = 1, jpj 583 591 DO ji = 1, jpi 584 zcoef = r aass * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,1) * tmask(ji,jj,1) * tmask_i(ji,jj)592 zcoef = ryyss * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,1) * tmask(ji,jj,1) * tmask_i(ji,jj) 585 593 cotdep(ji,jj) = river(ji,jj) *1E9 / ( 12. * zcoef + rtrn ) 586 594 rivinp(ji,jj) = (river(ji,jj)+riverdoc(ji,jj)) *1E9 / ( 31.6* zcoef + rtrn ) 587 nitdep(ji,jj) = 7.6 * ndepo(ji,jj) / ( 14E6*r aass*fse3t(ji,jj,1) + rtrn )595 nitdep(ji,jj) = 7.6 * ndepo(ji,jj) / ( 14E6*ryyss*fse3t(ji,jj,1) + rtrn ) 588 596 END DO 589 597 END DO … … 596 604 DO jj = 2 , jpjm1 597 605 DO ji = fs_2, fs_jpim1 598 zcoef = cvol(ji,jj,1) * r aass606 zcoef = cvol(ji,jj,1) * ryyss 599 607 rivpo4input = rivpo4input + rivinp(ji,jj) * zcoef 600 608 rivalkinput = rivalkinput + cotdep(ji,jj) * zcoef … … 612 620 ! ------------------------- 613 621 DO jk = 1, jpkm1 614 ironsed(:,:,jk) = sedfeinput * cmask(:,:,jk) / ( fse3t(:,:,jk) * r jjss)622 ironsed(:,:,jk) = sedfeinput * cmask(:,:,jk) / ( fse3t(:,:,jk) * rday ) 615 623 END DO 616 624 CALL lbc_lnk( ironsed , 'T', 1. ) ! Lateral boundary conditions on ( ironsed ) (sign unchanged)
Note: See TracChangeset
for help on using the changeset viewer.