source: trunk/libf/phytitan/sfluxv.F @ 130

Last change on this file since 130 was 104, checked in by slebonnois, 14 years ago

SLebonnois: modification de makelmdz et create_make_gcm pour pouvoir
compiler la chimie titan. Pas de raison que ca gene les autres.
Dans cette version, les compilations de Venus et Titan fonctionnent.

Phytitan: modifications pour pouvoir compiler correctement.
Il ne manque plus que physiq.F a faire.

File size: 4.2 KB
Line 
1      SUBROUTINE SFLUXV(IPRINT,IG,dist_sol)
2
3      use dimphy
4      IMPLICIT NONE
5#include "dimensions.h"
6#include "comorbit.h"
7
8c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
9      INTEGER   ngrid
10      PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
11c
12      INTEGER NLAYER,NLEVEL,NSPECV,NSPC1V
13      PARAMETER (NLAYER=llm,NLEVEL=NLAYER+1)
14      PARAMETER (NSPECV=24,NSPC1V=25)
15      INTEGER IG,IPRINT,NT,NTERM(NSPECV),J,K
16
17      REAL FUW(NLEVEL),FDW(NLEVEL)
18      REAL DT0(NLAYER),T0(NLEVEL),WB0(NLAYER),CO0(NLAYER)
19      REAL BTOP, BSURF
20      REAL ATERM(4,NSPECV),BTERM(4,NSPECV)
21      REAL PEXPON(NSPECV), SOLARF(NSPECV)
22      REAL  DTAUV(ngrid,NLAYER,NSPECV,4)
23     &     ,TAUV (ngrid,NLEVEL,NSPECV,4)
24     &     ,WBARV(ngrid,NLAYER,NSPECV,4)
25     &     ,COSBV(ngrid,NLAYER,NSPECV,4)
26      REAL BWNV(NSPC1V),WNOV(NSPECV)
27     &     ,DWNV(NSPECV),WLNV(NSPECV)
28      REAL  FNETV(ngrid,NLEVEL),     
29     &      FUPV(ngrid,NLEVEL,NSPECV),
30     &      FDV(ngrid,NLEVEL,NSPECV),
31     &      FMNETV(ngrid,NLEVEL),
32     &      FMUPV(NLEVEL),FMDV(NLEVEL)
33      REAL CSUBP,RSFI,RSFV,F0PI
34      REAL UBARI,UBARV,UBAR0
35
36      real dist_sol
37
38      COMMON /VISGAS/SOLARF,NTERM,PEXPON,
39     &         ATERM,BTERM
40
41      COMMON /OPTICV/  DTAUV
42     &                ,TAUV
43     &                ,WBARV
44     &                ,COSBV
45
46      COMMON /SPECTV/ BWNV,WNOV
47     &               ,DWNV,WLNV
48
49      COMMON /FLUXvV/ FNETV,     
50     &               FUPV,
51     &               FDV,
52     &               FMNETV
53
54      COMMON /PLANT/ CSUBP,RSFI,RSFV,F0PI
55      COMMON /UBARED/ UBARI,UBARV,UBAR0
56
57
58* ON NE FAIT PAS LE CALCUL POUR TOUS LES IG EN MEME TEMPS
59* IG EST EN ARGUMENT...et SFLUXV EST APPELLEE NGRIDMX FOIS!
60
61C ZERO THE NET FLUXES
62      DO 212 J=1,NLEVEL
63      FNETV(ig,J)=-0.
64      FMNETV(ig,J)=-0.
65  212 CONTINUE
66C
67C WE NOW ENTER A MAJOR LOOP OVER SPECRAL INTERVALS IN THE VISIBLE
68C AND OVER THE HORIZONTAL GRIDS
69C TO CALCULATE THE NET FLUX IN EACH SPECTRAL INTERVAL
70C
71C ***************************************************************
72
73
74      DO 500 K=1,NSPECV          ! #2
75C ZERO THE SPECTRAL FLUXES IN ANTCIPATION OF SUMMING OVER NTERMS
76
77       DO 214 J=1,NLEVEL         ! #3
78       FUPV(ig,J,K)=0.
79       FDV(ig,J,K)=0.
80 214   CONTINUE
81C
82C SET UP THE UPPER AND LOWER BOUNDARY CONDITIONS ON THE VISIBLE
83      F0PI=SOLARF(K)*(p_elips/dist_sol)**2.
84      BTOP=0.0
85C
86C LOOP OVER THE NTERMS BEGINING HERE
87      DO 912 NT=1,NTERM(K)
88      BSURF=0.+ RSFV*UBAR0*F0PI*EXP(-TAUV(ig,NLEVEL,K,NT)/UBAR0)
89C
90C* WE CAN NOW SOLVE FOR THE COEFFICIENTS OF THE TWO STREAM
91C  CALL A SUBROUTINE THAT SOLVES  FOR THE FLUX TERMS
92C WITHIN EACH INTERVAL AT THE MIDPOINT WAVENUMBER
93C
94C FUW AND FDW ARE WORKING FLUX ARRAYS THAT WILL BE USED TO
95C RETURN FLUXES FOR A GIVEN NT
96C
97C23456789012345678901234567890123456789012345678901234567890123456789012
98C
99C  USE DT0,T0,WB0,CO0 INSTEAD OF DTAUV(ig,1,K,NT)..etc...
100
101       DO  J=1,NLAYER       
102             DT0(J)=DTAUV(ig,J,K,NT)
103             T0(J) =TAUV(ig,J,K,NT)
104             WB0(J)=WBARV(ig,J,K,NT)
105             CO0(J)=COSBV(ig,J,K,NT)
106       ENDDO
107
108             T0(NLEVEL)=TAUV(ig,NLEVEL,K,NT)
109
110c       PRINT*,'entree gfluxv #: ',ig,K
111c        write(*,*) (DT0(J),J=1,NLAYER)
112c        print*,'---'
113c        write(*,*) (T0(J),J=1,NLEVEL)
114c        print*,'---'
115c        write(*,*) (WB0(J),J=1,NLAYER)
116c        print*,'---'
117c        write(*,*) (CO0(J),J=1,NLAYER)
118c        print*,'UBAR0 ',UBAR0
119c      print*,NLEVEL,WNOV(K),F0PI,RSFV,BTOP,BSURF
120       FUW = 0.0
121       FDW = 0.0
122       FMUPV=0.0
123       FMDV= 0.0
124       
125      CALL GFLUXV(NLEVEL,WNOV(K),DT0,T0,
126     & WB0,CO0,F0PI,RSFV,BTOP,BSURF,FUW,FDW,FMUPV,
127     &    FMDV,IPRINT)
128c       PRINT*,'sortie gfluxv #: ',ig,K
129c        print*,'UBAR0 ',UBAR0
130
131C NOW CALCULTE THE CUMULATIVE VISIBLE NET FLUX
132
133             DO 300 J=1,NLEVEL         !<------------
134      FMNETV(ig,J)=FMNETV(ig,J)+( FMUPV(J)-FMDV(J) )*ATERM(NT,K)
135      FNETV(ig,J)=FNETV(ig,J)+( FUW(J)-FDW(J) )*ATERM(NT,K)
136
137C AND THE SPECTRAL FLUXES SUMMED OVER THE NTERMS
138      FUPV(ig,J,K)=FUPV(ig,J,K)+FUW(J)*ATERM(NT,K)
139      FDV(ig,J,K)=FDV(ig,J,K)+FDW(J)*ATERM(NT,K)
140  300         CONTINUE                !<--------------
141C
142C
143  912 CONTINUE
144  500 CONTINUE
145
146C *** END OF MAJOR SPECTRAL INTERVAL LOOP IN THE VISIBLE*****
147      RETURN
148      END
Note: See TracBrowser for help on using the repository browser.