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

Annotation of /trunk/dyn3d/caldyn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 66 - (hide annotations)
Thu Sep 20 13:00:41 2012 UTC (11 years, 8 months ago) by guez
Original Path: trunk/libf/dyn3d/caldyn.f90
File size: 2878 byte(s)
Changed name of module "comvert" to "disvert_m". Changed constant
1. to 0.3 in vertical sampling "strato".

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

  ViewVC Help
Powered by ViewVC 1.1.21