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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 190 - (hide annotations)
Thu Apr 14 15:15:56 2016 UTC (8 years, 2 months ago) by guez
File size: 3207 byte(s)
Created module cv_thermo_m around procedure cv_thermo. Moved variables
from module cvthermo to module cv_thermo_m, where they are defined.

In ini_histins and initphysto, using part of rlon and rlat from
phyetat0_m is pretending that we do not know about the dynamical grid,
while the way we extract zx_lon(:, 1) and zx_lat(1, :) depends on
ordering inside rlon and rlat. So we might as well simplify and
clarify by using directly rlonv and rlatu.

Removed intermediary variables in write_histins and phystokenc.

1 guez 69 module fluxstokenc_m
2 guez 3
3 guez 69 IMPLICIT NONE
4 guez 3
5 guez 69 contains
6 guez 3
7 guez 69 SUBROUTINE fluxstokenc(pbaru, pbarv, masse, teta, phi, phis, time_step, itau)
8 guez 3
9 guez 69 ! Author: F. Hourdin
10 guez 3
11 guez 69 USE histwrite_m, ONLY: histwrite
12 guez 178 use initfluxsto_m, only: initfluxsto
13     USE dimens_m, ONLY: jjm, llm
14     USE paramet_m, ONLY: iip1, ijmllm, ijp1llm, ip1jm, ip1jmp1
15 guez 69 USE comgeom, ONLY: aire
16     USE tracstoke, ONLY: istdyn, istphy
17 guez 3
18 guez 190 REAL, intent(in):: pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)
19 guez 102 REAL, intent(in):: masse(ip1jmp1, llm)
20 guez 69 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 guez 3
26 guez 190 ! Local:
27 guez 3
28 guez 69 REAL, SAVE:: pbaruc(ip1jmp1, llm), pbarvc(ip1jm, llm)
29     REAL, SAVE:: massem(ip1jmp1, llm)
30     real, SAVE:: tetac(ip1jmp1, llm), phic(ip1jmp1, llm)
31 guez 3
32 guez 69 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 guez 3
38 guez 69 !-------------------------------------------------------------
39 guez 3
40 guez 69 IF (itau == 0) THEN
41 guez 144 CALL initfluxsto(time_step, istdyn*time_step, istdyn*time_step, &
42 guez 69 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 guez 3
52 guez 69 CALL initial0(ijp1llm, phic)
53     CALL initial0(ijp1llm, tetac)
54     CALL initial0(ijp1llm, pbaruc)
55     CALL initial0(ijmllm, pbarvc)
56     END IF
57 guez 3
58 guez 190 ! Accumulation des flux de masse horizontaux
59 guez 69 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 guez 3
70 guez 190 ! S\'election de la masse instantan\'ee des mailles avant le transport.
71 guez 102 IF (itau == 0) massem = masse
72 guez 28
73 guez 69 IF (mod(itau + 1, istdyn) == 0) THEN
74 guez 190 ! On advecte \`a ce pas de temps
75     ! normalisation
76 guez 69 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 guez 28
87 guez 190 ! Traitement des flux de masse avant advection.
88     ! 1. Calcul de w
89     ! 2. Groupement des mailles pr\`es du p\^ole.
90 guez 28
91 guez 150 CALL groupe(pbaruc, pbarvc, pbarug, pbarvg, wg)
92 guez 69
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