source: LMDZ.3.3/trunk/libf/phylmd/o3cm.F @ 1546

Last change on this file since 1546 was 2, checked in by lmdz, 25 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.3 KB
RevLine 
[2]1      SUBROUTINE o3cm (amb, bmb, sortie, ntab)
2      IMPLICIT none
3c======================================================================
4c Auteur(s): Z.X. Li (LMD/CNRS) date: 19930818
5c Objet: Ce programme calcule le contenu en ozone "sortie"
6c        (unite: cm.atm) entre deux niveaux "amb" et "bmb" (unite: mb)
7c        "ntab" est le nombre d'intervalles pour l'integration, sa
8c        valeur depend bien sur de l'epaisseur de la couche et de
9c        la precision qu'on souhaite a obtenir
10c======================================================================
11      REAL amb, bmb, sortie
12      INTEGER ntab
13c======================================================================
14      INTEGER n
15      REAL xtab(500), xa, xb, ya, yb, xincr
16c======================================================================
17      external mbtozm
18c======================================================================
19c la fonction en ligne w(x) donne le profil de l'ozone en fonction
20c de l'altitude (unite: cm.atm / km)
21c (Green 1964, Appl. Opt. 3: 203-208)
22      REAL wp, xp, h, x, w, con
23      PARAMETER (wp=0.218, xp=23.25, h=4.63, con=1.0)
24      w(x) = wp/h * EXP((x-xp)/h)/ (con+EXP((x-xp)/h))**2
25c======================================================================
26      IF (ntab .GT. 499) STOP 'BIG ntab'
27      xincr = (bmb-amb) / FLOAT(ntab)
28      xtab(1) = amb
29      DO n = 2, ntab
30         xtab(n) = xtab(n-1) + xincr
31      ENDDO
32      xtab(ntab+1) = bmb
33      sortie = 0.0
34      DO n = 1, ntab
35         CALL mbtozm(xtab(n), xa)
36         CALL mbtozm(xtab(n+1), xb)
37         xa = xa / 1000.
38         xb = xb / 1000.
39         ya = w(xa)
40         yb = w(xb)
41         sortie = sortie + (ya+yb)/2.0 * ABS(xb-xa)
42      ENDDO
43      RETURN
44      END
45      SUBROUTINE mbtozm(rmb,zm)
46      IMPLICIT none
47c======================================================================
48c Auteur(s): Z.X. Li (LMD/CNRS)
49c Objet: transformer une hauteur de mb (rmb) en metre (zm)
50c======================================================================
51      REAL rmb, zm
52c======================================================================
53      REAL gama, tzero, pzero, g, r
54      PARAMETER (gama=6.5e-3, tzero=288., pzero=1013.25)
55      PARAMETER (g=9.81, r=287.0)
56      zm = tzero/gama * ( 1.-(rmb/pzero)**(r*gama/g) )
57      RETURN
58      END
Note: See TracBrowser for help on using the repository browser.