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

Contents of /trunk/dyn3d/caldyn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 88 - (show annotations)
Tue Mar 11 15:09:02 2014 UTC (10 years, 1 month ago) by guez
File size: 3351 byte(s)
Removed useless argument mode of subroutine read_reanalyse.

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

  ViewVC Help
Powered by ViewVC 1.1.21