Changeset 955 for LMDZ4/trunk


Ignore:
Timestamp:
Apr 30, 2008, 3:30:22 PM (17 years ago)
Author:
lsce
Message:

ACo+JG

Ajout du flag aerosol_couple :
false=lecture des sulfates dans un fichier(par defaut) - configuration existante
true=calcul des aerosol par INCA

Location:
LMDZ4/trunk/libf/phylmd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/phylmd/conf_phys.F90

    r900 r955  
    1010 &                     iflag_cldcon, &
    1111 &                     iflag_ratqs,ratqsbas,ratqshaut, &
    12  &                     ok_ade, ok_aie, &
     12 &                     ok_ade, ok_aie, aerosol_couple, &
    1313 &                     bl95_b0, bl95_b1,&
    1414 &                     iflag_thermals,nsplit_thermals, &
     
    5151  integer              :: iflag_radia
    5252  logical              :: ok_journe, ok_mensuel, ok_instan, ok_hf
    53   LOGICAL              :: ok_ade, ok_aie
     53  LOGICAL              :: ok_ade, ok_aie, aerosol_couple
    5454  REAL                 :: bl95_b0, bl95_b1
    5555  real                 :: fact_cldcon, facttemps,ratqsbas,ratqshaut
     
    6060  logical,SAVE              :: ok_veget_omp, ok_newmicro_omp
    6161  logical,SAVE        :: ok_journe_omp, ok_mensuel_omp, ok_instan_omp, ok_hf_omp       
    62   LOGICAL,SAVE        :: ok_ade_omp, ok_aie_omp
     62  LOGICAL,SAVE        :: ok_ade_omp, ok_aie_omp, aerosol_couple_omp
    6363  REAL,SAVE           :: bl95_b0_omp, bl95_b1_omp
    6464  REAL,SAVE           :: freq_ISCCP_omp, ecrit_ISCCP_omp
     
    184184  ok_aie_omp = .false.
    185185  call getin('ok_aie', ok_aie_omp)
     186
     187!
     188!Config Key  = aerosol_couple
     189!Config Desc = read aerosol in file or calcul by inca
     190!Config Def  = .false.
     191!Config Help = Used in physiq.F
     192!
     193  aerosol_couple_omp = .false.
     194  CALL getin('aerosol_couple',aerosol_couple_omp)
    186195
    187196!
     
    968977    ok_ade = ok_ade_omp
    969978    ok_aie = ok_aie_omp
     979    aerosol_couple = aerosol_couple_omp
    970980    bl95_b0 = bl95_b0_omp
    971981    bl95_b1 = bl95_b1_omp
     
    10571067  write(numout,*)' ok_ade = ',ok_ade
    10581068  write(numout,*)' ok_aie = ',ok_aie
     1069  write(numout,*)' aerosol_couple = ', aerosol_couple
    10591070  write(numout,*)' bl95_b0 = ',bl95_b0
    10601071  write(numout,*)' bl95_b1 = ',bl95_b1
  • LMDZ4/trunk/libf/phylmd/phys_state_var_mod.F90

    r952 r955  
    170170!topswai, solswai : Aerosol indirect effect
    171171      REAL,SAVE,ALLOCATABLE :: topswai(:), solswai(:)
    172 #ifdef INCA_AER
    173 #ifdef CPP_COUPLE
     172#ifdef INCA
    174173! topswad_inca, solswad_inca : Aerosol direct effect
    175174      REAL,SAVE,ALLOCATABLE :: topswad_inca(:), solswad_inca(:)
     
    184183      REAL,SAVE,ALLOCATABLE :: cg_inca(:,:,:,:)
    185184      REAL,SAVE,ALLOCATABLE :: ccm(:,:,:)
    186 #endif
    187185#endif
    188186      REAL,SAVE,ALLOCATABLE :: tau_ae(:,:,:), piz_ae(:,:,:)
     
    292290      ALLOCATE(topswad(klon), solswad(klon))
    293291      ALLOCATE(topswai(klon), solswai(klon))
    294 #ifdef INCA_AER
    295 #ifdef CPP_COUPLE
     292#ifdef INCA
    296293      ALLOCATE(topswad_inca(klon), solswad_inca(klon))
    297294      ALLOCATE(topswad0_inca(klon), solswad0_inca(klon))
     
    303300      ALLOCATE(cg_inca(klon,klev,9,2))
    304301      ALLOCATE(ccm(klon,klev,2))
    305 #endif
    306302#endif
    307303      ALLOCATE(tau_ae(klon,klev,2), piz_ae(klon,klev,2))
     
    391387      deallocate(topswad, solswad)
    392388      deallocate(topswai, solswai)
    393 #ifdef INCA_AER
    394 #ifdef CPP_COUPLE
     389#ifdef INCA
    395390      deallocate(topswad_inca, solswad_inca)
    396391      deallocate(topswad0_inca, solswad0_inca)
     
    403398      deallocate(ccm)
    404399#endif
    405 #endif
    406400      deallocate(tau_ae, piz_ae)
    407401      deallocate(cg_ae)
  • LMDZ4/trunk/libf/phylmd/physiq.F

    r953 r955  
    10741074
    10751075      ! Aerosol optical properties
    1076 #ifdef INCA_AER
    1077 #ifdef CPP_COUPLE
     1076#ifdef INCA
    10781077! Aerosol optical properties by INCA model
    10791078      CHARACTER*4              ::    rfname(9)
    1080 
    1081 #endif
    10821079#endif
    10831080      REAL aerindex(klon)       ! POLDER aerosol index
     
    10891086      SAVE ok_ade, ok_aie, bl95_b0, bl95_b1
    10901087c$OMP THREADPRIVATE(ok_ade, ok_aie, bl95_b0, bl95_b1)
     1088      LOGICAL, SAVE :: aerosol_couple ! true  : calcul des aerosols dans INCA
     1089                                      ! false : lecture des aerosol dans un fichier
     1090c$OMP THREADPRIVATE(aerosol_couple)   
    10911091
    10921092c
     
    12091209         solswai(:)=0.
    12101210         solswad(:)=0.
    1211 #ifdef INCA_AER
    1212 #ifdef CPP_COUPLE
     1211#ifdef INCA
    12131212         tau_inca(:,:,:,:) = 0.
    12141213         piz_inca(:,:,:,:) = 0.
     
    12261225         solsw0_inca(:,:)  = 0.
    12271226#endif
    1228 #endif
    12291227!rv
    12301228!ACo
     
    12451243     .                  fact_cldcon, facttemps,ok_newmicro,iflag_radia,
    12461244     .                  iflag_cldcon,iflag_ratqs,ratqsbas,ratqshaut,
    1247      .                  ok_ade, ok_aie,
     1245     .                  ok_ade, ok_aie, aerosol_couple,
    12481246     .                  bl95_b0, bl95_b1,
    12491247     .                  iflag_thermals,nsplit_thermals,
     
    25802578cjq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr)
    25812579      IF (ok_ade.OR.ok_aie) THEN
    2582 #if defined(CPP_COUPLE) && !defined(INCA_AER)
    2583          ! Get sulfate aerosol distribution
    2584          CALL readsulfate(rjourvrai, debut, sulfate)
    2585          CALL readsulfate_preind(rjourvrai, debut, sulfate_pi)
    2586 
    2587          ! Calculate aerosol optical properties (Olivier Boucher)
    2588          CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl,
    2589      .        tau_ae, piz_ae, cg_ae, aerindex)
    2590 #endif
    2591 #if !defined(CPP_COUPLE)
    2592          ! Get sulfate aerosol distribution
    2593          CALL readsulfate(rjourvrai, debut, sulfate)
    2594          CALL readsulfate_preind(rjourvrai, debut, sulfate_pi)
    2595 
    2596          ! Calculate aerosol optical properties (Olivier Boucher)
    2597          CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl,
    2598      .        tau_ae, piz_ae, cg_ae, aerindex)
    2599 #endif
    2600 cym
     2580         IF ( .NOT. aerosol_couple ) THEN
     2581            ! Get sulfate aerosol distribution
     2582            CALL readsulfate(rjourvrai, debut, sulfate)
     2583            CALL readsulfate_preind(rjourvrai, debut, sulfate_pi)
     2584
     2585            ! Calculate aerosol optical properties (Olivier Boucher)
     2586            CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl,
     2587     .           tau_ae, piz_ae, cg_ae, aerindex)
     2588         ENDIF
    26012589      ELSE
    26022590        tau_ae(:,:,:)=0.0
    26032591        piz_ae(:,:,:)=0.0
    26042592        cg_ae(:,:,:)=0.0
    2605 cym     
    26062593      ENDIF
    26072594
     
    27682755c parametres pour diagnostiques:
    27692756c
     2757      IF (aerosol_couple ) THEN
     2758#ifdef INCA
     2759         sulfate(:,:) = ccm(:,:,1)
     2760         sulfate_pi(:,:) = ccm(:,:,2)
     2761#endif
     2762      ENDIF
     2763
    27702764      if (ok_newmicro) then
    27712765      CALL newmicro (paprs, pplay,ok_newmicro,
     
    27742768     .            flwp, fiwp, flwc, fiwc,
    27752769     e            ok_aie,
    2776 #if defined(CPP_COUPLE) && defined(INCA_AER) 
    2777      e            ccm(:,:,1), ccm(:,:,2),
    2778 #else
    27792770     e            sulfate, sulfate_pi,
    2780 #endif
    27812771     e            bl95_b0, bl95_b1,
    27822772     s            cldtaupi, re, fl)
     
    28142804      endif
    28152805     
    2816 
    2817 #if defined(CPP_COUPLE) && defined(INCA_AER)
    2818       CALL radlwsw_inca ! nouveau rayonnement (compatible Arpege-IFS)
    2819      e            (kdlon,kflev,dist, rmu0, fract,
     2806      IF (aerosol_couple) THEN
     2807#ifdef INCA_AER
     2808         CALL radlwsw_inca   
     2809     e            (kdlon,kflev,dist, rmu0, fract, solaire,
    28202810     e             paprs, pplay,zxtsol,albsol, albsollw, t_seri,q_seri,
    28212811     e             wo,
     
    28272817     s             lwdn0, lwdn, lwup0, lwup,
    28282818     s             swdn0, swdn, swup0, swup,
    2829      e             ok_ade, ok_aie, ! new for aerosol radiative effects
    2830      e             tau_inca, piz_inca, cg_inca, ! ="=
    2831      s             topswad_inca, solswad_inca, ! ="=
    2832      s             topswad0_inca, solswad0_inca, ! ="=
     2819     e             ok_ade, ok_aie,
     2820     e             tau_inca, piz_inca, cg_inca,
     2821     s             topswad_inca, solswad_inca,
     2822     s             topswad0_inca, solswad0_inca,
    28332823     s             topsw_inca, topsw0_inca,
    28342824     s             solsw_inca, solsw0_inca,
    2835      e             cldtaupi, ! ="=
    2836      s             topswai_inca, solswai_inca) ! ="=
    2837 #else
    2838       CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS)
     2825     e             cldtaupi,
     2826     s             topswai_inca, solswai_inca)
     2827#endif
     2828      ELSE
     2829         CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS)
    28392830     e            (dist, rmu0, fract,
    28402831     e             paprs, pplay,zxtsol,albsol1, albsol2, t_seri,q_seri,
     
    28522843     e             cldtaupi, ! ="=
    28532844     s             topswai, solswai) ! ="=
    2854 #endif
     2845      ENDIF
     2846
    28552847      itaprad = 0
    28562848      ENDIF
     
    30883080     I                   upwd,
    30893081     I                   dnwd,
     3082     I                   aerosol_couple,
    30903083#ifdef INCA
    30913084     I                   flxmass_w,
    3092 #if defined(INCA_AER) && defined(CPP_COUPLE)
    30933085     I                   tau_inca,
    30943086     I                   piz_inca,
     
    30963088     I                   ccm,
    30973089     I                   rfname,
    3098 #endif
    30993090#endif
    31003091     O                   tr_seri)
  • LMDZ4/trunk/libf/phylmd/phytrac.F

    r928 r955  
    5757     I                    upwd,
    5858     I                    dnwd,
     59     I                    aerosol_couple,
    5960#ifdef INCA
    6061     I                    flxmass_w,
    61 #if defined(INCA_AER) && defined(CPP_COUPLE)
    6262     I                   tau_inca,
    6363     I                   piz_inca,
     
    6565     I                   ccm,
    6666     I                   rfname,
    67 #endif
    6867#endif
    6968     O                    tr_seri)
     
    143142      REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)   !--lessivage convection
    144143      REAL prfl(klon,klev+1),   psfl(klon,klev+1)     !--lessivage large-scale
    145 
     144      LOGICAL aerosol_couple
    146145#ifdef INCA
    147146      REAL flxmass_w(klon,klev)
    148147      CHARACTER(len=8) :: solsym(nqmax)
    149 #if defined(INCA_AER) && defined(CPP_COUPLE)
    150148      integer la
    151149      REAL              ::    tau_inca(klon,klev,9,2)
     
    154152      character*4       ::    rfname(9)
    155153      REAL              ::    ccm(klon,klev,2)
    156 #endif
    157154#endif
    158155c      integer iflag_con
     
    521518
    522519#ifdef INCA_AER
    523         CALL aerosolmain (tr_seri,
     520        CALL aerosolmain (aerosol_couple,
     521     $                 tr_seri,
    524522     $                 pdtphys,
    525523     $                 pplay,
     
    538536     $                 t_seri,       ! for chimiaq
    539537     $                 rh,
    540 #ifdef CPP_COUPLE
    541538     $                 tau_inca,
    542539     $                 piz_inca,
     
    544541     $                 rfname,
    545542     $                 ccm,
    546 #endif
    547543     $                 lafin)
    548544#endif
Note: See TracChangeset for help on using the changeset viewer.