Changeset 1955 for LMDZ5/trunk/libf
- Timestamp:
- Jan 31, 2014, 9:17:49 AM (11 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/ozonecm_m.F90
r1907 r1955 6 6 contains 7 7 8 function ozonecm(rlat, paprs, rjour)8 function ozonecm(rlat, paprs,read_climoz, rjour) 9 9 10 10 ! The ozone climatology is based on an analytic formula which fits the … … 27 27 REAL, INTENT (IN) :: paprs(:, :) ! (klon,klev+1) 28 28 REAL, INTENT (IN) :: rjour 29 INTEGER, INTENT (IN) :: read_climoz 29 30 30 31 REAL ozonecm(klon,klev) … … 45 46 REAL, parameter:: an = 360., zo3q3 = 4E-8 46 47 REAL, parameter:: dobson_unit = 2.1415E-5 ! in kg m-2 47 REAL gms, zslat, zsint, zcost, z, ppm, qpm, a48 REAL gms, zslat,zslat2, zsint, zcost, z, ppm, qpm, a 48 49 REAL asec, bsec, aprim, zo3a3 49 50 … … 57 58 DO i = 1, klon 58 59 zslat = sin(pi / 180. * rlat(i)) 60 zslat2=zslat*zslat 61 IF (read_climoz==-1) zslat=0. ! Imposing hemispheric symetry 59 62 zsint = sin(2 * pi * (rjour + 15.) / an) 60 63 zcost = cos(2 * pi * (rjour + 15.) / an) 61 64 z = 0.0531 + zsint * (-0.001595+0.009443*zslat) & 62 65 + zcost * (-0.001344-0.00346*zslat) & 63 + zslat **2 * (.056222 + zslat**2 &66 + zslat2 * (.056222 + zslat2 & 64 67 * (-.037609+.012248*zsint+.00521*zcost+.008890*zslat)) 65 68 zo3a3 = zo3q3/ps/2. 66 69 z = z - zo3q3*ps 67 70 gms = z 68 ppm = 800. - (500.*zslat+150.*zcost)*zslat69 qpm = 1.74E-5 - (7.5E-6*zslat+1.7E-6*zcost)*zslat70 bsec = 2650. + 5000.*zslat **271 ppm = 800. - 500.*zslat2 - 150.*zcost*zslat 72 qpm = 1.74E-5 - 7.5E-6*zslat2 - 1.7E-6*zcost*zslat 73 bsec = 2650. + 5000.*zslat2 71 74 a = 4.0*(bsec)**(3./2.)*(ppm)**(3./2.)*(1.0+(bsec/ps)**(3./2.)) 72 75 a = a/(bsec**(3./2.)+ppm**(3./2.))**2 … … 88 91 ozonecm = max(ozonecm, 1e-12) 89 92 93 print*,'ozonecm Version2' 94 90 95 END function ozonecm 91 96 -
LMDZ5/trunk/libf/phylmd/physiq.F90
r1950 r1955 870 870 integer iostat 871 871 872 REAL zzz 873 872 874 !====================================================================== 873 875 ! Gestion calendrier : mise a jour du module phys_cal_mod … … 1604 1606 co3i = ro3i 1605 1607 end if 1606 elseif(MOD(itap-1,lmt_pas) == 0) THEN1608 ELSEIF (MOD(itap-1,lmt_pas) == 0) THEN 1607 1609 ! Once per day, update ozone from Royer: 1608 wo(:, :, 1) = ozonecm(rlat, paprs, rjour=real(days_elapsed+1)) 1610 1611 IF (solarlong0<-999.) then 1612 ! Generic case with evolvoing season 1613 zzz=real(days_elapsed+1) 1614 ELSE IF (abs(solarlong0-1000.)<1.e-4) then 1615 ! Particular case with annual mean insolation 1616 zzz=real(90) ! could be revisited 1617 IF (read_climoz/=-1) THEN 1618 abort_message ='read_climoz=-1 is recommended when solarlong0=1000.' 1619 CALL abort_gcm (modname,abort_message,1) 1620 ENDIF 1621 ELSE 1622 ! Case where the season is imposed with solarlong0 1623 zzz=real(90) ! could be revisited 1624 ENDIF 1625 wo(:,:,1)=ozonecm(rlat, paprs,read_climoz,rjour=zzz) 1609 1626 ENDIF 1610 1627 !
Note: See TracChangeset
for help on using the changeset viewer.