source: LMDZ5/branches/AI-cosp/libf/phylmd/screenc.F90 @ 5425

Last change on this file since 5425 was 2243, checked in by fhourdin, 10 years ago

Revisite de la formule des flux de surface
(en priorité sur l'océan) en tenant compte des bourrasques de
vent et de la différence entre les hauteurs de rugosités pour
la quantité de mouvement, l'enthalpie et éventuellement l'humidité.

Etape 2 :

  • Séparation des z0 pour la quantité de mouvement et l'enthalpie.

rugs (ou frugs, rugos, yrugos ...) disparait au profit de z0m, z0h.
Les variables qui étaient à la fois dans pbl_surface_init et

  • dans l'interface de pbl_surface sont suprimées de pbl_surface_init.

On travaille directement pour ces variables (evap, z0, qsol, agesno)
avec les versions de phys_state_var_mod (qui étaient
précédemment dans phys_local_var_mod

  • Nouveaux paramètres de contrôle :
    • iflag_z0_oce (par défaut 0, et seule option active jusque là)
    • z0m_seaice_omp, z0h_seaice_omp, comme leur nom l'indique (utilisées dans surf_landice
    • z0min appliqué sur z0m et z0h dans pbl_surface
  • Introduction des fonction phyeta0_get et phyetat0_srf pour lire

les conditions de initiales dans startphy.
Du coup une seule ligne suffit pour lire et contrôler d'éventuels
problèmes.

  • Pour la variable fxrugs, elle est remplacée par z0m(:,nbsrf+1)

Ce choix déjà utilisé pour d'autres variables pourrait être
systématiser pour alléger l'interface de pbl_surface_mod.

  • Dans les sorties, les variables rugs* ont été remplacées par

des z0m* et z0h*

  • Nettoyage des anciens alb1/alb2 dans les lectures/écritures

des états de redémarrage (et dans pbl_surface_mod.F90).

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.6 KB
Line 
1!
2! $Header$
3!
4      SUBROUTINE screenc(klon, knon, nsrf, zxli, &
5                         speed, temp, q_zref, zref, &
6                         ts, qsurf, z0m, z0h, psol, &
7                         ustar, testar, qstar, okri, ri1, &
8                         pref, delu, delte, delq)
9      IMPLICIT NONE
10!-----------------------------------------------------------------------
11!
12! Objet : calcul "correcteur" des anomalies du vent, de la temperature
13!         potentielle et de l'humidite relative au niveau de reference zref et
14!         par rapport au 1er niveau (pour u) ou a la surface (pour theta et q)
15!         a partir des equations de Louis.
16!
17! Reference : Hess, Colman et McAvaney (1995)
18!
19! I. Musat, 01.07.2002
20!-----------------------------------------------------------------------
21!
22! klon----input-I- dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)
23! knon----input-I- nombre de points pour un type de surface
24! nsrf----input-I- indice pour le type de surface; voir indice_sol_mod.F90
25! zxli----input-L- TRUE si calcul des cdrags selon Laurent Li
26! speed---input-R- module du vent au 1er niveau du modele
27! temp----input-R- temperature de l'air au 1er niveau du modele
28! q_zref--input-R- humidite relative au 1er niveau du modele
29! zref----input-R- altitude de reference
30! ts------input-R- temperature de l'air a la surface
31! qsurf---input-R- humidite relative a la surface
32! z0m, z0h---input-R- rugosite
33! psol----input-R- pression au sol
34! ustar---input-R- facteur d'echelle pour le vent
35! testar--input-R- facteur d'echelle pour la temperature potentielle
36! qstar---input-R- facteur d'echelle pour l'humidite relative
37! okri----input-L- TRUE si on veut tester le nb. Richardson entre la sfce
38!                  et zref par rapport au Ri entre la sfce et la 1ere couche
39! ri1-----input-R- nb. Richardson entre la surface et la 1ere couche
40!
41! pref----input-R- pression au niveau de reference
42! delu----input-R- anomalie du vent par rapport au 1er niveau
43! delte---input-R- anomalie de la temperature potentielle par rapport a la surface
44! delq----input-R- anomalie de l'humidite relative par rapport a la surface
45!
46      INTEGER, intent(in) :: klon, knon, nsrf
47      LOGICAL, intent(in) :: zxli, okri
48      REAL, dimension(klon), intent(in) :: speed, temp, q_zref
49      REAL, intent(in) :: zref
50      REAL, dimension(klon), intent(in) :: ts, qsurf, z0m, z0h, psol
51      REAL, dimension(klon), intent(in) :: ustar, testar, qstar, ri1         
52!
53      REAL, dimension(klon), intent(out) :: pref, delu, delte, delq
54!-----------------------------------------------------------------------
55      include "YOMCST.h"
56!
57! Variables locales 
58      INTEGER :: i
59      REAL, dimension(klon) :: cdram, cdrah, cdran, zri1, gref
60!
61!-------------------------------------------------------------------------
62      DO i=1, knon
63        gref(i) = zref*RG
64      ENDDO
65!
66! Richardson at reference level
67!
68!      CALL coefcdrag (klon, knon, nsrf, zxli, &
69!                    speed, temp, q_zref, gref, &
70!                    psol, ts, qsurf, rugos, &
71!                    okri, ri1, &
72!                    cdram, cdrah, cdran, zri1, &
73!                    pref)
74! Fuxing WANG, 04/03/2015, replace the coefcdrag by the merged version: cdrag
75      CALL cdrag (knon, nsrf, &
76                    speed, temp, q_zref, gref, &
77                    psol, ts, qsurf, z0m, z0h, &
78                    cdram, cdrah, zri1, pref)
79      DO i = 1, knon
80        delu(i) = ustar(i)/sqrt(cdram(i))
81        delte(i)= (testar(i)* sqrt(cdram(i)))/ &
82                   cdrah(i)
83        delq(i)= (qstar(i)* sqrt(cdram(i)))/ &
84                  cdrah(i)
85      ENDDO
86!
87      RETURN
88      END SUBROUTINE screenc
Note: See TracBrowser for help on using the repository browser.