source: trunk/libf/phytitan/optci.v2 @ 21

Last change on this file since 21 was 3, checked in by slebonnois, 15 years ago

Creation de repertoires:

  • chantiers : pour communiquer sur nos projets de modifs
  • documentation : pour stocker les docs

Ajout de:

  • libf/phytitan : physique de Titan
  • libf/chimtitan: chimie de Titan
  • libf/phyvenus : physique de Venus
File size: 7.5 KB
Line 
1      SUBROUTINE OPTCI(ykim,nmicro,IPRINT)
2#include "dimensions.h"
3#include "dimphy.h"
4#include "microtab.h"
5#include "numchimrad.h"
6#include "clesphys.h"
7
8c   Arguments:
9c   ---------
10      REAL    ykim(klon,klev,nqmx)
11      integer nmicro
12c   ---------
13
14      PARAMETER(NLAYER=llm,NLEVEL=NLAYER+1)
15      PARAMETER (NSPECI=46,NSPC1I=47,NSPECV=24,NSPC1V=25)
16
17      COMMON /ATM/ Z(NLEVEL),PRESS(NLEVEL),DEN(NLEVEL),TEMP(NLEVEL)
18
19      COMMON /GASS/ CH4(NLEVEL),XN2(NLEVEL),H2(NLEVEL),AR(NLEVEL)
20     & ,XMU(NLEVEL),GAS1(NLAYER),COLDEN(NLAYER)
21
22      COMMON /STRATO/ C2H2(NLAYER),C2H6(NLAYER)
23      COMMON /STRAT2/ HCN(NLAYER)
24
25      COMMON /AERSOL/ RADIUS(NLAYER), XNUMB(NLAYER)
26     & , REALI(NSPECI), XIMGI(NSPECI), REALV(NSPECV), XIMGV(NSPECV)
27
28      COMMON /CLOUD/ RADCLD(NLAYER), XNCLD(NLAYER)
29     & , RCLDI(NSPECI), XICLDI(NSPECI), RCLDV(NSPECV), XICLDV(NSPECV)
30
31      COMMON /TAUS/   TAUHI(klon,NSPECI),TAUCI(klon,NSPECI),
32     &                TAUGI(klon,NSPECI),TAURV(klon,NSPECV),
33     &                TAUHV(klon,NSPECV),TAUCV(klon,NSPECV),
34     &                TAUGV(klon,NSPECV)
35
36      COMMON /TAUD/   TAUHID(klon,NLAYER,NSPECI)
37     &               ,TAUGID(klon,NLAYER,NSPECI)
38     &               ,TAUHVD(klon,NLAYER,NSPECV)
39     &               ,TAUGVD(klon,NLAYER,NSPECV)
40
41
42      COMMON /OPTICI/ DTAUI(klon,NLAYER,NSPECI)
43     &               ,TAUI (klon,NLEVEL,NSPECI)
44     &               ,WBARI(klon,NLAYER,NSPECI)
45     &               ,COSBI(klon,NLAYER,NSPECI)
46
47      COMMON /SPECTI/ BWNI(NSPC1I), WNOI(NSPECI),
48     &                DWNI(NSPECI), WLNI(NSPECI)
49
50      COMMON /PLANT/ CSUBP,RSFI,RSFV,F0PI
51      COMMON /ADJUST/ RHCH4,FH2,FHAZE,FHVIS,FHIR,TAUFAC,RCLOUD,FARGON
52      COMMON /CONST/RGAS,RHOP,PI,SIGMA
53      COMMON /traceurs/qaer
54      COMMON /part/v,r,vrat,dr,dv
55
56      DIMENSION PROD(NLEVEL)
57      real qaer(klon,nlayer,nqmx)
58      real v(nqmx),r(nqmx),vrat,dr(nqmx),dv(nqmx)
59      real xv1(klev,nspeci),xv2(klev,nspeci)
60      real xv3(klev,nspeci)
61      REAL QF1(nqmx,NSPECI),QF2(nqmx,NSPECI)
62      REAL QF3(nqmx,NSPECI),QF4(nqmx,NSPECI)
63      REAL QM1(nqmx,NSPECI),QM2(nqmx,NSPECI)
64      REAL QM3(nqmx,NSPECI),QM4(nqmx,NSPECI)
65      real emu
66      REAL TAEROSM1(NSPECI),TAEROSCATM1(NSPECI),DELTAZM1(NSPECI)
67     
68      save qf1,qf2,qf3,qf4,qm1,qm2,qm3,qm4
69
70      integer iopti,iwarning     ! iopti: premier appel, une seule boucle sur les l.d'o.
71      integer ig_,seulmtunpt
72      save iopti,iwarning,seulmtunpt
73      data iopti,iwarning,seulmtunpt/0,0,0/
74      integer    nmicromax,nmicro1pt
75      parameter (nmicromax=10)
76      real   zqaer_1pt(NLAYER,nmicromax)
77      real   TAUHID_1pt(NLAYER,NSPECI)
78      real   TAUGID_1pt(NLAYER,NSPECI)
79      real   TAUHI_1pt(NSPECI),TAUCI_1pt(NSPECI)
80      real   TAUGI_1pt(NSPECI)
81      real   DTAUI_1pt(NLAYER,NSPECI),TAUI_1pt(NLEVEL,NSPECI)
82      real   WBARI_1pt(NLAYER,NSPECI)
83      real   COSBI_1pt(NLAYER,NSPECI)
84
85C THE PRESSURE INDUCED TRANSITIONS ARE FROM REGIS
86C THE LAST SEVENTEEN INTERVALS ARE THE BANDS FROM GNF.
87C
88C THIS SUBROUTINE SETS THE OPTICAL CONSTANTS IN THE INFRARED
89C IT CALCUALTES FOR EACH LAYER, FOR EACH SPECRAL INTERVAL IN THE IR
90C LAYER: WBAR, DTAU, COSBAR
91C LEVEL: TAU
92C
93       print*,'START OPTCI'
94
95c Diagnostic eventuellement:
96c      if (nmicro.gt.0) then
97c      sum=0.
98c      do nng=2,klon
99c        do i=1,klev
100c         do j=1,nmicro
101c          print*,'j,rj',j,r(j)
102c          print*,'paer',qaer(nng,i,j)
103c           sum=sum+qaer(nng,i,j)*r(j)**3.*1.3333*3.1415*1000.
104c         enddo
105c        enddo
106c        enddo
107c      print*,sum/(klon-1),'SOMME COLONNE/OPTCI'
108c      endif
109
110
111c      do inq=1,nqmx
112c          print*,inq,r(inq),vrat,qaer(12,25,inq)
113c      enddo
114             
115C++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
116c INITIALISATIONS UNE SEULE FOIS
117C++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
118
119      if (iopti.eq.0) then
120
121c verif pour taille zqaer_1pt, sachant que si microfi=0 et nqmx=1,
122c il faut quand meme qu'on lise la look-up table de dim nq=10
123       if (nmicro.gt.nmicromax) then
124          print*,"nmicro.gt.nmicromax",nmicro,nmicromax
125          print*,"PROBLEME pour zqaer_1pt dans optci !!"
126          stop
127       endif
128
129     
130      DO 420 K=1,NSPECI
131C LETS USE THE THOLIN OPTICAL CONSTANTS FOR THE HAZE.
132          CALL THOLIN(WLNI(K),TNR,TNI)
133          REALI(K)=TNR
134          XIMGI(K)=TNI*FHIR
135C SET UP THE OPTICAL CONSTANTS FOR THE CLOUD
136          RCLDI(K)=1.27
137          XICLDI(K)=REFLIQ(WNOI(K))
138 420  CONTINUE
139
140C
141C ZERO ALL OPTICAL DEPTHS.
142C ??FLAG? FOR SOME APPLCIATIONS THE TOP OPACITY MAY NOT VANISH
143
144c      open  (unit=1,file='xsetupi')
145c      do i=1,klev
146c       read(1,*) a
147c        do j=1,nspeci
148c            read(1,*) xv1(i,j),xv2(i,j),xv3(i,j)
149c        enddo
150c       enddo
151c       close(1)
152
153      endif    ! fin initialisations premier appel
154
155c************************************************************************
156c************************************************************************
157      DO 79 ig=1,klon      ! BOUCLE SUR GRILLE HORIZONTALE   
158c      print*,'ig NEW optci',ig
159c************************************************************************
160c************************************************************************
161
162        if (.not.ylellouch) then
163       
164            XN2(1) = ykim(ig,1,iradn2)
165            CH4(1) = ykim(ig,1,iradch4)
166             H2(1) = ykim(ig,1,iradh2)
167            do j=2,nlayer
168               XN2(j) = (ykim(ig,j,iradn2)+ykim(ig,j-1,iradn2))/2.
169               CH4(j) = (ykim(ig,j,iradch4)+ykim(ig,j-1,iradch4))/2.
170                H2(j) = (ykim(ig,j,iradh2)+ykim(ig,j-1,iradh2))/2.
171            enddo
172            XN2(nlevel) = ykim(ig,nlayer,iradn2)
173            CH4(nlevel) = ykim(ig,nlayer,iradch4)
174             H2(nlevel) = ykim(ig,nlayer,iradh2)     
175
176            do j=1,nlayer
177               emu = ( xmu(j) + xmu(j+1) )/2.
178               C2H2(j) = ykim(ig,j,iradc2h2) * 26./emu
179               C2H6(j) = ykim(ig,j,iradc2h6) * 30./emu
180                HCN(j) = ykim(ig,j,iradhcn ) * 27./emu
181            enddo
182                 
183        endif
184
185        if (microfi.eq.1) then
186           do iq=1,nmicro
187              do j=1,NLAYER
188                 zqaer_1pt(j,iq)=qaer(ig,j,iq)
189              enddo
190           enddo
191           nmicro1pt=nmicro
192        else
193c initialisation zqaer_1pt a partir d'une look-up table
194c boucle sur nmicromax=10
195            print*,"LOOK-UP TABLE A FAIRE!!  dans optci"
196            stop
197           nmicro1pt=nmicromax
198        endif
199       
200        if (seulmtunpt.eq.0) then
201           call optci_1pt(zqaer_1pt,nmicro1pt,iopti,
202     .            COSBI_1pt,DTAUI_1pt,TAUHI_1pt,TAUHID_1pt,TAUCI_1pt,
203     .            TAUGI_1pt,TAUGID_1pt,WBARI_1pt,TAUI_1pt,IPRINT)
204        endif
205
206c Pas de microphysique, ni de composition variable: un seul passage
207c dans optci_1pt.
208        if ((microfi.eq.0).and.(ylellouch)) then
209           seulmtunpt = 1
210        endif
211       
212        COSBI(ig,:,:)  = COSBI_1pt(:,:)
213        WBARI(ig,:,:)  = WBARI_1pt(:,:)
214        DTAUI(ig,:,:)  = DTAUI_1pt(:,:)
215        TAUHI(ig,:)    = TAUHI_1pt(:)
216        TAUCI(ig,:)    = TAUCI_1pt(:)
217        TAUGI(ig,:)    = TAUGI_1pt(:)
218        TAUI(ig,:,:)   = TAUI_1pt(:,:)
219        TAUHID(ig,:,:) = TAUHID_1pt(:,:)
220        TAUGID(ig,:,:) = TAUGID_1pt(:,:)
221
222c************************************************************************
223c************************************************************************
224  79  CONTINUE   ! FIN BOUCLE GRILLE HORIZONTALE
225c************************************************************************
226c************************************************************************
227
228           print*,"TAUI(1400,:,10)=",TAUI(1400,:,10)
229           print*,"DTAUI(1400,:,10)=",DTAUI(1400,:,10)
230      print*, 'FIN OPTCI'
231      stop
232      RETURN
233      END
Note: See TracBrowser for help on using the repository browser.