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

Last change on this file since 1243 was 495, checked in by slebonnois, 13 years ago

Mise a jour physique Titan, ajout des forces de marees (dans la dynamique, sous flag titan). SL.

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