source: LMDZ5/trunk/libf/phydev/physiq.F90 @ 1664

Last change on this file since 1664 was 1615, checked in by Ehouarn Millour, 13 years ago

Introducing "phydev", the minimal physics package.
makegcm and makelmdz_fcm script have been updated to add CPP_PHYS preprocessing key when building with physics and CPP_EARTH for Earth (LMD physics) related routines or instructions in the dynamics.
Checked (on Vargas) that "dev" physics package compiles and runs well in all (seq/mpi/omp/mpi_omp) modes and that introduced changes do not modify results when using the "lmd" physics package.
EM + FH

File size: 3.8 KB
Line 
1! $Id: physiq.F 1565 2011-08-31 12:53:29Z jghattas $
2!#define IO_DEBUG
3
4      SUBROUTINE physiq (nlon,nlev, &
5     &            debut,lafin,jD_cur, jH_cur,pdtphys, &
6     &            paprs,pplay,pphi,pphis,presnivs,clesphy0, &
7     &            u,v,t,qx, &
8     &            flxmass_w, &
9     &            d_u, d_v, d_t, d_qx, d_ps &
10     &            , dudyn &
11     &            , PVteta)
12
13      USE dimphy
14      USE infotrac
15      USE comgeomphy
16
17      IMPLICIT none
18!======================================================================
19! Objet: Moniteur general de la physique du modele
20!======================================================================
21!
22!  Arguments:
23!
24! nlon----input-I-nombre de points horizontaux
25! nlev----input-I-nombre de couches verticales, doit etre egale a klev
26! debut---input-L-variable logique indiquant le premier passage
27! lafin---input-L-variable logique indiquant le dernier passage
28! jD_cur       -R-jour courant a l'appel de la physique (jour julien)
29! jH_cur       -R-heure courante a l'appel de la physique (jour julien)
30! pdtphys-input-R-pas d'integration pour la physique (seconde)
31! paprs---input-R-pression pour chaque inter-couche (en Pa)
32! pplay---input-R-pression pour le mileu de chaque couche (en Pa)
33! pphi----input-R-geopotentiel de chaque couche (g z) (reference sol)
34! pphis---input-R-geopotentiel du sol
35! presnivs-input_R_pressions approximat. des milieux couches ( en PA)
36! u-------input-R-vitesse dans la direction X (de O a E) en m/s
37! v-------input-R-vitesse Y (de S a N) en m/s
38! t-------input-R-temperature (K)
39! qx------input-R-humidite specifique (kg/kg) et d'autres traceurs
40! d_t_dyn-input-R-tendance dynamique pour "t" (K/s)
41! d_q_dyn-input-R-tendance dynamique pour "q" (kg/kg/s)
42! flxmass_w -input-R- flux de masse verticale
43! d_u-----output-R-tendance physique de "u" (m/s/s)
44! d_v-----output-R-tendance physique de "v" (m/s/s)
45! d_t-----output-R-tendance physique de "t" (K/s)
46! d_qx----output-R-tendance physique de "qx" (kg/kg/s)
47! d_ps----output-R-tendance physique de la pression au sol
48!IM
49! PVteta--output-R-vorticite potentielle a des thetas constantes
50!======================================================================
51#include "dimensions.h"
52#include "comcstphy.h"
53
54      integer jjmp1
55      parameter (jjmp1=jjm+1-1/jjm)
56      integer iip1
57      parameter (iip1=iim+1)
58
59      INTEGER ivap          ! indice de traceurs pour vapeur d'eau
60      PARAMETER (ivap=1)
61      INTEGER iliq          ! indice de traceurs pour eau liquide
62      PARAMETER (iliq=2)
63
64!
65!
66! Variables argument:
67!
68      INTEGER nlon
69      INTEGER nlev
70      REAL, intent(in):: jD_cur, jH_cur
71
72      REAL pdtphys
73      LOGICAL debut, lafin
74      REAL paprs(klon,klev+1)
75      REAL pplay(klon,klev)
76      REAL pphi(klon,klev)
77      REAL pphis(klon)
78      REAL presnivs(klev)
79      REAL znivsig(klev)
80      real pir
81
82      REAL u(klon,klev)
83      REAL v(klon,klev)
84      REAL t(klon,klev),theta(klon,klev)
85      REAL qx(klon,klev,nqtot)
86      REAL flxmass_w(klon,klev)
87      REAL omega(klon,klev) ! vitesse verticale en Pa/s
88      REAL d_u(klon,klev)
89      REAL d_v(klon,klev)
90      REAL d_t(klon,klev)
91      REAL d_qx(klon,klev,nqtot)
92      REAL d_ps(klon)
93      real da(klon,klev),phi(klon,klev,klev),mp(klon,klev)
94!IM definition dynamique o_trac dans phys_output_open
95!      type(ctrl_out) :: o_trac(nqtot)
96!FH! REAL PVteta(klon,nbteta)
97      REAL PVteta(klon,1)
98      REAL dudyn(iim+1,jjmp1,klev)
99
100    INTEGER        longcles
101    PARAMETER    ( longcles = 20 )
102
103real temp_newton(klon,klev)
104integer k
105logical, save :: first=.true.
106
107      REAL clesphy0( longcles      )
108
109d_u=0.
110d_v=0.
111d_t=0.
112d_qx=0.
113d_ps=0.
114
115     d_u(:,1)=-u(:,1)/86400.
116     do k=1,klev
117        temp_newton(:,k)=280.+cos(rlatd(:))*40.-pphi(:,k)/rg*6.e-3
118        d_t(:,k)=(temp_newton(:,k)-t(:,k))/1.e5
119     enddo
120
121
122      print*,'COUCOU PHYDEV'
123      return
124      end
Note: See TracBrowser for help on using the repository browser.