LMDZ
caldyn0.F90
Go to the documentation of this file.
1 SUBROUTINE caldyn0(itau,ucov,vcov,teta,ps,masse,pk,phis,phi,w,pbaru,pbarv,time)
2 !
3 !-------------------------------------------------------------------------------
4 ! Author: P. Le Van ; modif. 04/93: F.Forget.
5 !-------------------------------------------------------------------------------
6 ! Purpose: Compute dynamic tendencies.
7 !-------------------------------------------------------------------------------
8  USE control_mod, ONLY: resetvarc
9  IMPLICIT NONE
10  include "dimensions.h"
11  include "paramet.h"
12  include "comconst.h"
13  include "comvert.h"
14  include "comgeom.h"
15 !===============================================================================
16 ! Arguments:
17  INTEGER, INTENT(IN) :: itau !--- TIME STEP INDEX
18  REAL, INTENT(IN) :: vcov (ip1jm ,llm) !--- V COVARIANT WIND
19  REAL, INTENT(IN) :: ucov (ip1jmp1 ,llm) !--- U COVARIANT WIND
20  REAL, INTENT(IN) :: teta (ip1jmp1 ,llm) !--- POTENTIAL TEMPERATURE
21  REAL, INTENT(IN) :: ps (ip1jmp1) !--- GROUND PRESSURE
22  REAL, INTENT(OUT) :: masse(ip1jmp1 ,llm) !--- MASS IN EACH CELL
23  REAL, INTENT(IN) :: pk (iip1,jjp1,llm) !--- PRESSURE
24  REAL, INTENT(IN) :: phis (ip1jmp1) !--- GROUND GEOPOTENTIAL
25  REAL, INTENT(IN) :: phi (ip1jmp1 ,llm) !--- 3D GEOPOTENTIAL
26  REAL, INTENT(OUT) :: w (ip1jmp1 ,llm) !--- VERTICAL WIND
27  REAL, INTENT(OUT) :: pbaru(ip1jmp1 ,llm) !--- U MASS FLUX
28  REAL, INTENT(OUT) :: pbarv(ip1jm ,llm) !--- V MASS FLUX
29  REAL, INTENT(IN) :: time !--- TIME
30 !===============================================================================
31 ! Local variables:
32  REAL, DIMENSION(ip1jmp1,llmp1) :: p
33  REAL, DIMENSION(ip1jmp1,llm) :: ucont, massebx, ang, ecin, convm, bern
34  REAL, DIMENSION(ip1jmp1) :: dp
35  REAL, DIMENSION(ip1jm ,llm) :: vcont, masseby, massebxy, vorpot
36  REAL, DIMENSION(ip1jm) :: psexbarxy
37  INTEGER :: ij, l
38 !===============================================================================
39  CALL covcont ( llm , ucov , vcov , ucont, vcont )
40  CALL pression ( ip1jmp1, ap , bp , ps , p )
41  CALL psextbar ( ps , psexbarxy )
42  CALL massdair ( p , masse )
43  CALL massbar ( masse, massebx , masseby )
44  CALL massbarxy( masse, massebxy )
45  CALL flumass ( massebx, masseby , vcont, ucont ,pbaru, pbarv )
46  CALL convmas ( pbaru, pbarv , convm )
47  CALL vitvert ( convm , w )
48  CALL tourpot ( vcov , ucov , massebxy , vorpot )
49  CALL enercin ( vcov , ucov , vcont , ucont , ecin )
50  CALL bernoui ( ip1jmp1, llm , phi , ecin , bern )
51  DO l=1,llm; ang(:,l) = ucov(:,l) + constang(:); END DO
52  resetvarc=.true. ! force a recomputation of initial values in sortvarc
53  dp(:)=convm(:,1)/airesurg(:)
54  CALL sortvarc( itau,ucov,teta,ps,masse,pk,phis,vorpot,phi,bern,dp,time,vcov )
55 
56 END SUBROUTINE caldyn0
!$Header llmm1 INTEGER ip1jmp1
Definition: paramet.h:14
subroutine covcont(klevel, ucov, vcov, ucont, vcont)
Definition: covcont.F90:2
!$Header!CDK comgeom COMMON comgeom airesurg
Definition: comgeom.h:25
!$Id bp(llm+1)
!$Header!CDK comgeom COMMON comgeom constang
Definition: comgeom.h:25
subroutine massbarxy(masse, massebxy)
Definition: massbarxy.F90:2
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
subroutine psextbar(ps, psexbarxy)
Definition: psextbar.F:5
subroutine convmas(pbaru, pbarv, convm)
Definition: convmas.F90:2
subroutine bernoui(ngrid, nlay, pphi, pecin, pbern)
Definition: bernoui.F:5
!$Header llmm1 INTEGER ip1jm
Definition: paramet.h:14
subroutine pression(ngrid, ap, bp, ps, p)
Definition: pression.F90:2
subroutine massbar(masse, massebx, masseby)
Definition: massbar.F90:2
!$Header jjp1
Definition: paramet.h:14
subroutine tourpot(vcov, ucov, massebxy, vorpot)
Definition: tourpot.F90:2
logical, save resetvarc
Definition: control_mod.F90:40
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
subroutine vitvert(convm, w)
Definition: vitvert.F90:2
subroutine flumass(massebx, masseby, vcont, ucont, pbaru, pbarv)
Definition: flumass.F90:2
subroutine massdair(p, masse)
Definition: massdair.F:5
subroutine enercin(vcov, ucov, vcont, ucont, ecin)
Definition: enercin.F90:2
subroutine caldyn0(itau, ucov, vcov, teta, ps, masse, pk, phis, phi, w, pbaru, pbarv, time)
Definition: caldyn0.F90:2
subroutine sortvarc(itau, ucov, teta, ps, masse, pk, phis, vorpot, phi, bern, dp, time, vcov)
Definition: sortvarc.F:7