source: trunk/LMDZ.TITAN/libf/phytitan/sfluxv.F @ 201

Last change on this file since 201 was 175, checked in by slebonnois, 14 years ago

S.LEBONNOIS:

  • Revision majeure de la physique Titan => ajout des nuages version 10 bins (Jeremie Burgalat) Cette version reste a tester mais avec clouds=0, on reste sur l'ancienne.
  • Quelques ajouts dans la doc.
File size: 4.9 KB
Line 
1      SUBROUTINE SFLUXV(IPRINT,IG,dist_sol,icld)
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,icld
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     &     ,DTAUVP(ngrid,NLAYER,NSPECV,4)
27     &     ,TAUVP(ngrid,NLEVEL,NSPECV,4)
28     &     ,WBARVP(ngrid,NLAYER,NSPECV,4)
29     &     ,COSBVP(ngrid,NLAYER,NSPECV,4)
30      REAL BWNV(NSPC1V),WNOV(NSPECV)
31     &     ,DWNV(NSPECV),WLNV(NSPECV)
32      REAL  FNETV(ngrid,NLEVEL),     
33     &      FUPV(ngrid,NLEVEL,NSPECV),
34     &      FDV(ngrid,NLEVEL,NSPECV),
35     &      FMNETV(ngrid,NLEVEL),
36     &      FMUPV(NLEVEL),FMDV(NLEVEL)
37      REAL CSUBP,RSFI,RSFV,F0PI
38      REAL UBARI,UBARV,UBAR0
39
40      real dist_sol
41
42      COMMON /VISGAS/SOLARF,NTERM,PEXPON,
43     &         ATERM,BTERM
44
45      COMMON /OPTICV/  DTAUV
46     &                ,TAUV
47     &                ,WBARV
48     &                ,COSBV
49     &                ,DTAUVP
50     &                ,TAUVP
51     &                ,WBARVP
52     &                ,COSBVP
53
54      COMMON /SPECTV/ BWNV,WNOV
55     &               ,DWNV,WLNV
56
57      COMMON /FLUXvV/ FNETV,     
58     &               FUPV,
59     &               FDV,
60     &               FMNETV
61
62      COMMON /PLANT/ CSUBP,RSFI,RSFV,F0PI
63      COMMON /UBARED/ UBARI,UBARV,UBAR0
64
65
66* ON NE FAIT PAS LE CALCUL POUR TOUS LES IG EN MEME TEMPS
67* IG EST EN ARGUMENT...et SFLUXV EST APPELLEE NGRIDMX FOIS!
68
69C ZERO THE NET FLUXES
70      DO 212 J=1,NLEVEL
71      FNETV(ig,J)=-0.
72      FMNETV(ig,J)=-0.
73  212 CONTINUE
74C
75C WE NOW ENTER A MAJOR LOOP OVER SPECRAL INTERVALS IN THE VISIBLE
76C AND OVER THE HORIZONTAL GRIDS
77C TO CALCULATE THE NET FLUX IN EACH SPECTRAL INTERVAL
78C
79C ***************************************************************
80
81
82      DO 500 K=1,NSPECV          ! #2
83C ZERO THE SPECTRAL FLUXES IN ANTCIPATION OF SUMMING OVER NTERMS
84
85       DO 214 J=1,NLEVEL         ! #3
86       FUPV(ig,J,K)=0.
87       FDV(ig,J,K)=0.
88 214   CONTINUE
89C
90C SET UP THE UPPER AND LOWER BOUNDARY CONDITIONS ON THE VISIBLE
91      F0PI=SOLARF(K)*(p_elips/dist_sol)**2.
92      BTOP=0.0
93C
94C LOOP OVER THE NTERMS BEGINING HERE
95      DO 912 NT=1,NTERM(K)
96      IF (ICLD.eq.1) THEN
97        BSURF=0.+ RSFV*UBAR0*F0PI*EXP(-TAUV(ig,NLEVEL,K,NT)/UBAR0)
98      ELSE
99        BSURF=0.+ RSFV*UBAR0*F0PI*EXP(-TAUVP(ig,NLEVEL,K,NT)/UBAR0)
100      ENDIF
101C
102C* WE CAN NOW SOLVE FOR THE COEFFICIENTS OF THE TWO STREAM
103C  CALL A SUBROUTINE THAT SOLVES  FOR THE FLUX TERMS
104C WITHIN EACH INTERVAL AT THE MIDPOINT WAVENUMBER
105C
106C FUW AND FDW ARE WORKING FLUX ARRAYS THAT WILL BE USED TO
107C RETURN FLUXES FOR A GIVEN NT
108C
109C23456789012345678901234567890123456789012345678901234567890123456789012
110C
111C  USE DT0,T0,WB0,CO0 INSTEAD OF DTAUV(ig,1,K,NT)..etc...
112
113       IF (ICLD.EQ.1) THEN
114         DO  J=1,NLAYER       
115           DT0(J)=DTAUV(ig,J,K,NT)
116           T0(J) =TAUV(ig,J,K,NT)
117           WB0(J)=WBARV(ig,J,K,NT)
118           CO0(J)=COSBV(ig,J,K,NT)
119         ENDDO
120         T0(NLEVEL)=TAUV(ig,NLEVEL,K,NT)
121       ELSE
122         DO  J=1,NLAYER       
123           DT0(J)=DTAUVP(ig,J,K,NT)
124           T0(J) =TAUVP(ig,J,K,NT)
125           WB0(J)=WBARVP(ig,J,K,NT)
126           CO0(J)=COSBVP(ig,J,K,NT)
127         ENDDO
128         T0(NLEVEL)=TAUVP(ig,NLEVEL,K,NT)
129
130       ENDIF
131
132c       PRINT*,'entree gfluxv #: ',ig,K
133c        write(*,*) (DT0(J),J=1,NLAYER)
134c        print*,'---'
135c        write(*,*) (T0(J),J=1,NLEVEL)
136c        print*,'---'
137c        write(*,*) (WB0(J),J=1,NLAYER)
138c        print*,'---'
139c        write(*,*) (CO0(J),J=1,NLAYER)
140c        print*,'UBAR0 ',UBAR0
141c      print*,NLEVEL,WNOV(K),F0PI,RSFV,BTOP,BSURF
142       FUW = 0.0
143       FDW = 0.0
144       FMUPV=0.0
145       FMDV= 0.0
146       
147      CALL GFLUXV(NLEVEL,WNOV(K),DT0,T0,
148     & WB0,CO0,F0PI,RSFV,BTOP,BSURF,FUW,FDW,FMUPV,
149     &    FMDV,IPRINT)
150c       PRINT*,'sortie gfluxv #: ',ig,K
151c        print*,'UBAR0 ',UBAR0
152
153C NOW CALCULTE THE CUMULATIVE VISIBLE NET FLUX
154
155             DO 300 J=1,NLEVEL         !<------------
156      FMNETV(ig,J)=FMNETV(ig,J)+( FMUPV(J)-FMDV(J) )*ATERM(NT,K)
157      FNETV(ig,J)=FNETV(ig,J)+( FUW(J)-FDW(J) )*ATERM(NT,K)
158
159C AND THE SPECTRAL FLUXES SUMMED OVER THE NTERMS
160      FUPV(ig,J,K)=FUPV(ig,J,K)+FUW(J)*ATERM(NT,K)
161      FDV(ig,J,K)=FDV(ig,J,K)+FDW(J)*ATERM(NT,K)
162  300         CONTINUE                !<--------------
163C
164C
165  912 CONTINUE
166  500 CONTINUE
167
168C *** END OF MAJOR SPECTRAL INTERVAL LOOP IN THE VISIBLE*****
169      RETURN
170      END
Note: See TracBrowser for help on using the repository browser.