source: LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/calcul_simulISCCP.h @ 5017

Last change on this file since 5017 was 1299, checked in by Laurent Fairhead, 15 years ago

Nettoyage general pour se rapprocher des normes et éviter des erreurs a la
compilation:

  • tous les FLOAT() sont remplacés par des REAL()
  • tous les STOP dans phylmd sont remplacés par des appels à abort_gcm
  • le common control défini dans le fichier control.h est remplacé par le module control_mod pour éviter des messages sur l'alignement des variables dans les déclarations
  • des $Header$ remplacés par des $Id$ pour svn

Quelques remplacements à faire ont pu m'échapper


General cleanup of the code to try and adhere to norms and to prevent some
compilation errors:

  • all FLOAT() instructions have been replaced by REAL() instructions
  • all STOP instructions in phylmd have been replaced by calls to abort_gcm
  • the common block control defined in the control.h file has been replaced by the control_mod to prevent compilation warnings on the alignement of declared variables
  • $Header$ replaced by $Id$ for svn

Some changes which should have been made might have escaped me

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.3 KB
RevLine 
[644]1c
[1299]2c $Id: calcul_simulISCCP.h 1299 2010-01-20 14:27:21Z dcugnet $
[644]3c
[684]4c on appelle le simulateur ISCCP toutes les 3h
5c et on fait des sorties 1 fois par jour
[644]6c
[684]7c ATTENTION : le temps de calcul peut augmenter considerablement !
8c =============================================================== c
9      DO n=1, napisccp
10c
11      nbapp_isccp=30 !appel toutes les 15h
[827]12cIM 170107      isccppas=NINT((itap*dtime)/3600.) !Nb. d'heures de la physique
[684]13      freqin_pdt(n)=ifreq_isccp(n)
14c
[644]15cIM initialisation nbsunlit pour calculs simulateur ISCCP pdt la journee
16c
17      DO i=1, klon
18       sunlit(i)=1 
19       IF(rmu0(i).EQ.0.) sunlit(i)=0
[1299]20       nbsunlit(1,i,n)=REAL(sunlit(i))
[644]21      ENDDO
22c
23cIM calcul tau, emissivite nuages convectifs
24c
25      convfra(:,:)=rnebcon(:,:)
26      convliq(:,:)=rnebcon(:,:)*clwcon(:,:)
27c
28      CALL newmicro (paprs, pplay,ok_newmicro,
29     .            t_seri, convliq, convfra, dtau_c, dem_c,
30     .            cldh_c, cldl_c, cldm_c, cldt_c, cldq_c,
31     .            flwp_c, fiwp_c, flwc_c, fiwc_c,
32     e            ok_aie,
[1279]33     e            mass_solu_aero, mass_solu_aero_pi,
[644]34     e            bl95_b0, bl95_b1,
35     s            cldtaupi, re, fl)
36c
37cIM calcul tau, emissivite nuages startiformes
38c
39      CALL newmicro (paprs, pplay,ok_newmicro,
40     .            t_seri, cldliq, cldfra, dtau_s, dem_s,
41     .            cldh_s, cldl_s, cldm_s, cldt_s, cldq_s,
42     .            flwp_s, fiwp_s, flwc_s, fiwc_s,
43     e            ok_aie,
[1279]44     e            mass_solu_aero, mass_solu_aero_pi,
[644]45     e            bl95_b0, bl95_b1,
46     s            cldtaupi, re, fl)
47c
48      cldtot(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.)
49c
50cIM inversion des niveaux de pression ==> de haut en bas
51c
52      CALL haut2bas(klon, klev, pplay, pfull)
53      CALL haut2bas(klon, klev, q_seri, qv)
54      CALL haut2bas(klon, klev, cldtot, cc)
55      CALL haut2bas(klon, klev, rnebcon, conv)
56      CALL haut2bas(klon, klev, dtau_s, dtau_sH2B)
57      CALL haut2bas(klon, klev, dtau_c, dtau_cH2B)
58      CALL haut2bas(klon, klev, t_seri, at)
59      CALL haut2bas(klon, klev, dem_s, dem_sH2B)
60      CALL haut2bas(klon, klev, dem_c, dem_cH2B)
61      CALL haut2bas(klon, klevp1, paprs, phalf)
62c
[684]63cIM: initialisation de seed
[644]64c
[684]65        DO i=1, klon
[644]66c
[684]67         aa=ABS(paprs(i,2)-NINT(paprs(i,2)))
68         seed_re(i,n)=1000.*aa+1.
69         seed(i,n)=NINT(seed_re(i,n))
[644]70c
[684]71         IF(seed(i,n).LT.50) THEN
72c          print*,'seed<50 avant i seed itap paprs',i,
73c    .     seed(i,n),itap,paprs(i,2)
74           seed(i,n)=50+seed(i,n)+i+itap
75           seed_old(i,n)=seed(i,n)
76c
77           IF(itap.GT.1) then
78            IF(seed(i,n).EQ.seed_old(i,n)) THEN
79             seed(i,n)=seed(i,n)+10
80             seed_old(i,n)=seed(i,n)
81            ENDIF
82           ENDIF
83c
84c          print*,'seed<50 apres i seed itap paprs',i,
85c    .     seed(i,n),itap,paprs(i,2)
86c
87          ELSE IF(seed(i,n).EQ.0) THEN
88           print*,'seed=0 i paprs aa seed_re',
89     .     i,paprs(i,2),aa,seed_re(i,n)
[1299]90           abort_message = ''
91           CALL abort_gcm (modname,abort_message,1)
[684]92          ELSE IF(seed(i,n).LT.0) THEN
93           print*,'seed < 0, i seed itap paprs',i,
94     .     seed(i,n),itap,paprs(i,2)
[1299]95           abort_message = ''
96           CALL abort_gcm (modname,abort_message,1)
[684]97          ENDIF
98c
[644]99        ENDDO
100c     
101cIM: pas de debug, debugcol
102      debug=0
103      debugcol=0
104c
105cIM o500 ==> distribution nuage ftion du regime dynamique (vit. verticale a 500 hPa)
106c
107        DO k=1, klevm1
108        kp1=k+1
109c       PRINT*,'k, presnivs',k,presnivs(k), presnivs(kp1)
110        if(presnivs(k).GT.50000.AND.presnivs(kp1).LT.50000.) THEN
111         DO i=1, klon
112          o500(i)=omega(i,k)*RDAY/100.
113c         if(i.EQ.1) print*,' 500hPa lev',k,presnivs(k),presnivs(kp1)
114         ENDDO
115         GOTO 1000
116        endif
1171000  continue
118      ENDDO
119c
120cIM recalcule les nuages vus par satellite, via le simulateur ISCCP
121c
122      CALL ISCCP_CLOUD_TYPES(
123     &     debug,
124     &     debugcol,
125     &     klon,
126     &     sunlit,
127     &     klev,
[684]128     &     ncol(n),
129     &     seed(:,n),
[644]130     &     pfull,
131     &     phalf,
132     &     qv, cc, conv, dtau_sH2B, dtau_cH2B,
133     &     top_height,
134     &     overlap,
135     &     tautab,
136     &     invtau,
137     &     ztsol,
138     &     emsfc_lw,
139     &     at, dem_sH2B, dem_cH2B,
[684]140     &     fq_isccp(:,:,:,n),
141     &     totalcldarea(:,n),
142     &     meanptop(:,n),
143     &     meantaucld(:,n),
144     &     boxtau(:,:,n),
145     &     boxptop(:,:,n))
[644]146c
[684]147      ENDDO !n=1, napisccp
148
Note: See TracBrowser for help on using the repository browser.