/[lmdze]/trunk/dyn3d/caldyn.f
ViewVC logotype

Annotation of /trunk/dyn3d/caldyn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 70 - (hide annotations)
Mon Jun 24 15:39:52 2013 UTC (10 years, 11 months ago) by guez
Original Path: trunk/libf/dyn3d/caldyn.f90
File size: 2974 byte(s)
In procedure, "addfi" access directly the module variable "dtphys"
instead of going through an argument.

In "conflx", do not create a local variable for temperature with
reversed order of vertical levels. Instead, give an actual argument
with reversed order in "physiq".

Changed names of variables "rmd" and "rmv" from module "suphec_m" to
"md" and "mv".

In "hgardfou", print only the first temperature out of range found.

1 guez 43 module caldyn_m
2 guez 3
3 guez 43 IMPLICIT NONE
4 guez 3
5 guez 43 contains
6 guez 3
7 guez 43 SUBROUTINE caldyn(itau, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, &
8 guez 47 dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, conser)
9 guez 3
10 guez 70 ! From dyn3d/caldyn.F, version 1.1.1.1 2004/05/19 12:53:06
11 guez 43 ! Auteur : P. Le Van
12     ! Objet : calcul des tendances dynamiques
13 guez 3
14 guez 46 use advect_m, only: advect
15 guez 70 USE comgeom, ONLY: airesurg, constang
16     USE dimens_m, ONLY: iim, llm
17     USE disvert_m, ONLY: ap, bp
18 guez 67 use massdair_m, only: massdair
19 guez 70 USE paramet_m, ONLY: iip1, ip1jm, ip1jmp1, jjp1, llmp1
20 guez 43 use sortvarc_m, only: sortvarc
21 guez 3
22 guez 43 ! Arguments:
23 guez 3
24 guez 46 INTEGER, INTENT(IN):: itau
25 guez 70 REAL ucov(ip1jmp1, llm), vcov(ip1jm, llm)
26 guez 43 real, intent(in):: teta(ip1jmp1, llm)
27 guez 70 REAL, INTENT(IN):: ps(ip1jmp1)
28     real, intent(out):: masse(ip1jmp1, llm)
29 guez 46 REAL, INTENT(IN):: pk(iip1, jjp1, llm)
30 guez 43 REAL pkf(ip1jmp1, llm)
31 guez 70 REAL, INTENT(IN):: phis(ip1jmp1)
32 guez 68 REAL, INTENT(IN):: phi(ip1jmp1, llm)
33 guez 47 REAL dv(ip1jm, llm), dudyn(ip1jmp1, llm)
34 guez 46 REAL dteta(ip1jmp1, llm)
35     real, INTENT(out):: dp(ip1jmp1)
36 guez 70 REAL, INTENT(out):: w(ip1jmp1, llm)
37 guez 43 REAL pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)
38     REAL, intent(in):: time_0
39 guez 70 LOGICAL, INTENT(IN):: conser
40 guez 3
41 guez 43 ! Local:
42 guez 3
43 guez 70 REAL vcont(ip1jm, llm), ucont(ip1jmp1, llm)
44 guez 43 REAL ang(ip1jmp1, llm), p(ip1jmp1, llmp1)
45 guez 46 REAL massebx(ip1jmp1, llm), masseby(ip1jm, llm)
46 guez 43 REAL vorpot(ip1jm, llm)
47     real ecin(ip1jmp1, llm), convm(ip1jmp1, llm)
48     REAL bern(ip1jmp1, llm)
49     REAL massebxy(ip1jm, llm)
50 guez 3
51 guez 43 INTEGER ij, l
52 guez 3
53 guez 43 !-----------------------------------------------------------------------
54 guez 3
55 guez 43 CALL covcont(llm, ucov, vcov, ucont, vcont)
56     forall (l = 1: llm + 1) p(:, l) = ap(l) + bp(l) * ps
57     CALL massdair(p, masse)
58     CALL massbar(masse, massebx, masseby)
59     CALL massbarxy(masse, massebxy)
60     CALL flumass(massebx, masseby, vcont, ucont, pbaru, pbarv)
61     CALL dteta1(teta, pbaru, pbarv, dteta)
62     CALL convmas(pbaru, pbarv, convm)
63 guez 46 dp = convm(:, 1) / airesurg
64 guez 43 CALL vitvert(convm, w)
65     CALL tourpot(vcov, ucov, massebxy, vorpot)
66 guez 47 CALL dudv1(vorpot, pbaru, pbarv, dudyn, dv)
67 guez 43 CALL enercin(vcov, ucov, vcont, ucont, ecin)
68     CALL bernoui(ip1jmp1, llm, phi, ecin, bern)
69 guez 47 CALL dudv2(teta, pkf, bern, dudyn, dv)
70 guez 3
71 guez 43 DO l = 1, llm
72     DO ij = 1, ip1jmp1
73     ang(ij, l) = ucov(ij, l) + constang(ij)
74     END DO
75     END DO
76 guez 3
77 guez 47 CALL advect(ang, vcov, teta, w, massebx, masseby, dudyn, dv, dteta)
78 guez 3
79 guez 43 ! WARNING probleme de peridocite de dv sur les PC/linux. Pb d'arrondi
80     ! probablement. Observe sur le code compile avec pgf90 3.0-1
81     DO l = 1, llm
82     DO ij = 1, ip1jm, iip1
83     IF (dv(ij, l)/=dv(ij+iim, l)) THEN
84     dv(ij+iim, l) = dv(ij, l)
85     END IF
86     END DO
87     END DO
88    
89     ! Sorties eventuelles des variables de controle :
90     IF (conser) CALL sortvarc(itau, ucov, teta, ps, masse, pk, phis, vorpot, &
91     phi, bern, dp, time_0)
92    
93     END SUBROUTINE caldyn
94    
95     end module caldyn_m

  ViewVC Help
Powered by ViewVC 1.1.21