source: trunk/libf/phytitan/optcv.v2 @ 53

Last change on this file since 53 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: 5.8 KB
Line 
1      SUBROUTINE OPTCV(nmicro,IPRINT)
2
3
4#include "dimensions.h"
5#include "dimphy.h"
6#include "microtab.h"
7#include "clesphys.h"
8
9c   Argument:
10c   ---------
11      integer nmicro
12c   ---------
13
14      PARAMETER(NLAYER=llm,NLEVEL=NLAYER+1)
15      PARAMETER (NSPECI=46,NSPC1I=47,NSPECV=24,NSPC1V=25)
16      COMMON /ATM/ Z(NLEVEL),PRESS(NLEVEL),DEN(NLEVEL),TEMP(NLEVEL)
17
18      COMMON /GASS/ CH4(NLEVEL),XN2(NLEVEL),H2(NLEVEL),AR(NLEVEL)
19     & ,XMU(NLEVEL),GAS1(NLAYER),COLDEN(NLAYER)
20
21      COMMON /VISGAS/SOLARF(NSPECV),NTERM(NSPECV),PEXPON(NSPECV),
22     &         ATERM(4,NSPECV),BTERM(4,NSPECV)
23
24      COMMON /AERSOL/ RADIUS(NLAYER), XNUMB(NLAYER)
25     & , REALI(NSPECI), XIMGI(NSPECI), REALV(NSPECV), XIMGV(NSPECV)
26
27      COMMON /CLOUD/ RADCLD(NLAYER), XNCLD(NLAYER)
28     &             , RCLDI(NSPECI), XICLDI(NSPECI)
29     &             , 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      COMMON /OPTICV/ DTAUV(klon,NLAYER,NSPECV,4)
42     &               ,TAUV(klon,NLEVEL,NSPECV,4)
43     &               ,WBARV(klon,NLAYER,NSPECV,4)
44     &               ,COSBV(klon,NLAYER,NSPECV,4)
45
46      COMMON /SPECTV/ BWNV(NSPC1V),WNOV(NSPECV)
47     &               ,DWNV(NSPECV),WLNV(NSPECV)
48
49      COMMON /PLANT/ CSUBP,RSFI,RSFV,F0PI
50      COMMON /ADJUST/ RHCH4,FH2,FHAZE,FHVIS,FHIR,TAUFAC,RCLOUD,FARGON
51      COMMON /CONST/ RGAS,RHOP,PI,SIGMA
52      COMMON /traceurs/qaer(klon,nlayer,nqmx)
53      COMMON /part/ v(nqmx),r(nqmx),vrat,dr(nqmx),dv(nqmx)
54
55      REAL xv1(klev,NSPECV)
56      REAL xv2(klev,NSPECV)
57      REAL xv3(klev,NSPECV)
58
59      REAL QF1(nqmx,NSPECV),QF2(nqmx,NSPECV)
60      REAL QF3(nqmx,NSPECV),QF4(nqmx,NSPECV)
61      REAL QM1(nqmx,NSPECV),QM2(nqmx,NSPECV)
62      REAL QM3(nqmx,NSPECV),QM4(nqmx,NSPECV)
63
64      save qf1,qf2,qf3,qf4,qm1,qm2,qm3,qm4
65 
66      integer ioptv,iwarning     ! ioptv: premier appel, une seule boucle sur les l.d'o.
67      integer ig_,seulmtunpt
68      save ioptv,iwarning,seulmtunpt
69      data ioptv,iwarning,seulmtunpt/0,0,0/
70      integer    nmicromax,nmicro1pt
71      parameter (nmicromax=10)
72      real   zqaer_1pt(NLAYER,nmicromax)
73      real   TAUHVD_1pt(NLAYER,NSPECV)
74      real   TAUGVD_1pt(NLAYER,NSPECV)
75      real   TAUHV_1pt(NSPECV),TAUCV_1pt(NSPECV)
76      real   TAURV_1pt(NSPECV),TAUGV_1pt(NSPECV)
77      real   DTAUV_1pt(NLAYER,NSPECV,4),TAUV_1pt(NLEVEL,NSPECV,4)
78      real   WBARV_1pt(NLAYER,NSPECV,4)
79      real   COSBV_1pt(NLAYER,NSPECV,4)
80
81C*
82C THIS SUBROUTINE SETS THE OPTICAL CONSTANTS IN THE VISIBLE
83C IT CALCUALTES FOR EACH LAYER, FOR EACH SPECRAL INTERVAL IN THE VIS
84C LAYER: WBAR, DTAU, COSBAR
85C LEVEL: TAU
86C
87       sum=0.
88       PRINT*,'OPTCV'
89       print*,'ATTENTION, TAU UNIFORME DANS OPTCV'
90
91c      do nng=2,klon
92c       do i=1,klev           
93c        do j=1,nqmx
94c          sum=sum+qaer(nng,i,j)*r(j)**3.*1.3333*3.1415*1000.
95c        enddo
96c       enddo
97c       enddo
98c       print*,sum/(klon-1),'SOMME COLONNE/OPTCV'
99
100             
101C++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
102c INITIALISATIONS UNE SEULE FOIS
103C++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
104
105      if (ioptv.eq.0) then
106
107c verif pour taille zqaer_1pt, sachant que si microfi=0 et nqmx=1,
108c il faut quand meme qu'on lise la look-up table de dim nq=10
109       if (nmicro.gt.nmicromax) then
110          print*,"nmicro.gt.nmicromax",nmicro,nmicromax
111          print*,"PROBLEME pour zqaer_1pt dans optcv !!"
112          stop
113       endif
114
115     
116      DO 130 K=1,NSPECV
117C LETS USE THE OPTICAL CONSTANTS FOR THOLIN
118      CALL THOLIN(WLNV(K),TNR,TNI)
119      REALV(K)=TNR
120      XIMGV(K)=TNI*FHVIS
121C BUT WE NOW USE THE GEOMETRIC ALBEDO FITTED RESULTS
122C      XIMGV(K)=FITEDT(WLNV(K))
123C      XIMGV(K)=FITEDN(WLNV(K))
124C THE CLOUD IS CLEAR IN THE VISIBLE
125      RCLDV(K)=1.27
126      XICLDV(K)=1.E-7
127 130  CONTINUE
128C
129c      open (unit=1,file='xsetupv')
130c       do j=1,nspecv
131c        read(1,*) a
132c        do i=1,klev
133c            read(1,*) xv1(i,j),xv2(i,j),xv3(i,j)
134c        enddo
135c       enddo
136c       close(1)
137
138      endif    ! fin initialisations premier appel
139
140c******* DEBUT DES BOUCLE GRILLE ************************
141c     PRINT*, 'AEROSOLS EN VISIBLE'
142
143      DO 101 ig=1,klon       !c! BOUCLE SUR GRILLE HORIZONTALE
144
145        if (microfi.eq.1) then
146           do iq=1,nmicro
147              do j=1,NLAYER
148                 zqaer_1pt(j,iq)=qaer(ig,j,iq)
149              enddo
150           enddo
151           nmicro1pt=nmicro
152        else
153c initialisation zqaer_1pt a partir d'une look-up table
154c boucle sur nmicromax=10
155            print*,"LOOK-UP TABLE A FAIRE!!  dans optcv"
156            stop
157           nmicro1pt=nmicromax
158        endif
159       
160        if (seulmtunpt.eq.0) then
161           call optcv_1pt(zqaer_1pt,nmicro1pt,ioptv,
162     .            COSBV_1pt,DTAUV_1pt,TAUHV_1pt,TAUHVD_1pt,TAUCV_1pt,
163     .       TAURV_1pt,TAUGV_1pt,TAUGVD_1pt,WBARV_1pt,TAUV_1pt,IPRINT)
164        endif
165
166c Pas de microphysique, ni de composition variable: un seul passage
167c dans optci_1pt.
168        if ((microfi.eq.0).and.(ylellouch)) then
169           seulmtunpt = 1
170        endif
171       
172        COSBV(ig,:,:,:)= COSBV_1pt(:,:,:)
173        WBARV(ig,:,:,:)= WBARV_1pt(:,:,:)
174        DTAUV(ig,:,:,:)= DTAUV_1pt(:,:,:)
175        TAUHV(ig,:)    = TAUHV_1pt(:)
176        TAUCV(ig,:)    = TAUCV_1pt(:)
177        TAURV(ig,:)    = TAURV_1pt(:)
178        TAUGV(ig,:)    = TAUGV_1pt(:)
179        TAUV(ig,:,:,:) = TAUV_1pt(:,:,:)
180        TAUHVD(ig,:,:) = TAUHVD_1pt(:,:)
181        TAUGVD(ig,:,:) = TAUGVD_1pt(:,:)
182
183 101  CONTINUE
184
185c FIN BOUCLE GRILLE     *******
186c******************************
187         
188           print*,"TAUV(1400,:,10,2)=",TAUV(1400,:,10,2)
189           print*,"DTAUV(1400,:,10,2)=",DTAUV(1400,:,10,2)
190       PRINT*, 'FIN OPTCV'
191       stop
192      RETURN
193      END
Note: See TracBrowser for help on using the repository browser.