/[lmdze]/trunk/Sources/dyn3d/fluxstokenc.f
ViewVC logotype

Contents of /trunk/Sources/dyn3d/fluxstokenc.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 178 - (show annotations)
Fri Mar 11 18:47:26 2016 UTC (8 years, 3 months ago) by guez
File size: 3228 byte(s)
Moved variables date0, deltat, datasz_max, ncvar_ids, point, buff_pos,
buffer, regular from module histcom_var to modules where they are
defined.

Removed procedure ioipslmpp, useless for a sequential program.

Added argument datasz_max to histwrite_real (to avoid circular
dependency with histwrite).

Removed useless variables and computations everywhere.

Changed real litteral constants from default kind to double precision
in lwb, lwu, lwvn, sw1s, swtt, swtt1, swu.

Removed unused arguments: paer of sw, sw1s, sw2s, swclr; pcldsw of
sw1s, sw2s; pdsig, prayl of swr; co2_ppm of clmain, clqh; tsol of
transp_lay; nsrf of screenp; kcrit and kknu of gwstress; pstd of
orosetup.

Added output of relative humidity.

1 module fluxstokenc_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE fluxstokenc(pbaru, pbarv, masse, teta, phi, phis, time_step, itau)
8
9 ! Author: F. Hourdin
10
11 USE histwrite_m, ONLY: histwrite
12 use initfluxsto_m, only: initfluxsto
13 USE dimens_m, ONLY: jjm, llm
14 USE paramet_m, ONLY: iip1, ijmllm, ijp1llm, ip1jm, ip1jmp1
15 USE comgeom, ONLY: aire
16 USE tracstoke, ONLY: istdyn, istphy
17
18 REAL pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)
19 REAL, intent(in):: masse(ip1jmp1, llm)
20 real, intent(in):: phi(ip1jmp1, llm)
21 real, intent(in):: teta(ip1jmp1, llm)
22 REAL, intent(in):: phis(ip1jmp1)
23 REAL, intent(in):: time_step
24 INTEGER, INTENT (IN):: itau
25
26 ! Variables local to the procedure:
27
28 REAL, SAVE:: pbaruc(ip1jmp1, llm), pbarvc(ip1jm, llm)
29 REAL, SAVE:: massem(ip1jmp1, llm)
30 real, SAVE:: tetac(ip1jmp1, llm), phic(ip1jmp1, llm)
31
32 REAL pbarug(ip1jmp1, llm), pbarvg(iip1, jjm, llm), wg(ip1jmp1, llm)
33 REAL tst(1), ist(1), istp(1)
34 INTEGER ij, l
35 INTEGER, save:: fluxid, fluxvid
36 integer fluxdid
37
38 !-------------------------------------------------------------
39
40 IF (itau == 0) THEN
41 CALL initfluxsto(time_step, istdyn*time_step, istdyn*time_step, &
42 fluxid, fluxvid, fluxdid)
43 CALL histwrite(fluxid, 'phis', 1, phis)
44 CALL histwrite(fluxid, 'aire', 1, aire)
45 tst(1) = time_step
46 CALL histwrite(fluxdid, 'dtvr', 1, tst)
47 ist(1) = istdyn
48 CALL histwrite(fluxdid, 'istdyn', 1, ist)
49 istp(1) = istphy
50 CALL histwrite(fluxdid, 'istphy', 1, istp)
51
52 CALL initial0(ijp1llm, phic)
53 CALL initial0(ijp1llm, tetac)
54 CALL initial0(ijp1llm, pbaruc)
55 CALL initial0(ijmllm, pbarvc)
56 END IF
57
58 ! accumulation des flux de masse horizontaux
59 DO l = 1, llm
60 DO ij = 1, ip1jmp1
61 pbaruc(ij, l) = pbaruc(ij, l) + pbaru(ij, l)
62 tetac(ij, l) = tetac(ij, l) + teta(ij, l)
63 phic(ij, l) = phic(ij, l) + phi(ij, l)
64 END DO
65 DO ij = 1, ip1jm
66 pbarvc(ij, l) = pbarvc(ij, l) + pbarv(ij, l)
67 END DO
68 END DO
69
70 ! selection de la masse instantannee des mailles avant le transport.
71 IF (itau == 0) massem = masse
72
73 IF (mod(itau + 1, istdyn) == 0) THEN
74 ! on advecte a ce pas de temps
75 ! normalisation
76 DO l = 1, llm
77 DO ij = 1, ip1jmp1
78 pbaruc(ij, l) = pbaruc(ij, l)/float(istdyn)
79 tetac(ij, l) = tetac(ij, l)/float(istdyn)
80 phic(ij, l) = phic(ij, l)/float(istdyn)
81 END DO
82 DO ij = 1, ip1jm
83 pbarvc(ij, l) = pbarvc(ij, l)/float(istdyn)
84 END DO
85 END DO
86
87 ! traitement des flux de masse avant advection.
88 ! 1. calcul de w
89 ! 2. groupement des mailles pres du pole.
90
91 CALL groupe(pbaruc, pbarvc, pbarug, pbarvg, wg)
92
93 CALL histwrite(fluxid, 'masse', itau, massem)
94 CALL histwrite(fluxid, 'pbaru', itau, pbarug)
95 CALL histwrite(fluxvid, 'pbarv', itau, pbarvg)
96 CALL histwrite(fluxid, 'w', itau, wg)
97 CALL histwrite(fluxid, 'teta', itau, tetac)
98 CALL histwrite(fluxid, 'phi', itau, phic)
99 END IF
100
101 END SUBROUTINE fluxstokenc
102
103 end module fluxstokenc_m

  ViewVC Help
Powered by ViewVC 1.1.21