Ignore:
Timestamp:
Apr 30, 2008, 3:14:57 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/branches/LMDZ4_V3_patches/libf/phylmd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4_V3_patches/libf/phylmd/conf_phys.F90

    r899 r954  
    99!IM&                   ratqsbas,ratqshaut,ip_ebil_phy, &
    1010 &                     ratqsbas,ratqshaut, &
    11  &                     ok_ade, ok_aie, &
     11 &                     ok_ade, ok_aie, aerosol_couple, &
    1212 &                     bl95_b0, bl95_b1,&
    1313 &                     iflag_thermals,nsplit_thermals)
     
    4747  logical              :: ok_veget, ok_newmicro
    4848  logical              :: ok_journe, ok_mensuel, ok_instan, ok_hf
    49   LOGICAL              :: ok_ade, ok_aie
     49  LOGICAL              :: ok_ade, ok_aie, aerosol_couple
    5050  REAL                 :: bl95_b0, bl95_b1
    5151  real                 :: fact_cldcon, facttemps,ratqsbas,ratqshaut
     
    5555  logical,SAVE              :: ok_veget_omp, ok_newmicro_omp
    5656  logical,SAVE        :: ok_journe_omp, ok_mensuel_omp, ok_instan_omp, ok_hf_omp       
    57   LOGICAL,SAVE        :: ok_ade_omp, ok_aie_omp
     57  LOGICAL,SAVE        :: ok_ade_omp, ok_aie_omp, aerosol_couple_omp
    5858  character (len = 8),SAVE  :: aer_type_omp
    5959  REAL,SAVE           :: bl95_b0_omp, bl95_b1_omp
     
    166166  ok_aie_omp = .false.
    167167  call getin('ok_aie', ok_aie_omp)
     168
     169
     170!
     171!Config Key  = aerosol_couple
     172!Config Desc = read aerosol in file or calcul by inca
     173!Config Def  = .false.
     174!Config Help = Used in physiq.F
     175!
     176  aerosol_couple_omp = .false.
     177  CALL getin('aerosol_couple',aerosol_couple_omp)
    168178
    169179!
     
    849859    ok_ade = ok_ade_omp
    850860    ok_aie = ok_aie_omp
     861    aerosol_couple=aerosol_couple_omp
    851862    aer_type = aer_type_omp
    852863    bl95_b0 = bl95_b0_omp
     
    929940  write(numout,*)' ok_ade = ',ok_ade
    930941  write(numout,*)' ok_aie = ',ok_aie
     942  write(numout,*)' aerosol_couple = ', aerosol_couple
    931943  write(numout,*)' aer_type = ',aer_type
    932944  write(numout,*)' bl95_b0 = ',bl95_b0
  • LMDZ4/branches/LMDZ4_V3_patches/libf/phylmd/physiq.F

    r943 r954  
    11!
    22! $Header$
     3!
    34!
    45c
     
    13051306c$OMP THREADPRIVATE(cg_ae)
    13061307
    1307 #ifdef INCA_AER
    1308 #ifdef CPP_COUPLE
     1308#ifdef INCA
    13091309! Aerosol optical properties by INCA model
    13101310      REAL, SAVE, ALLOCATABLE  ::    tau_inca(:,:,:,:)
     
    13191319      REAL,SAVE,ALLOCATABLE :: topsw_inca(:,:), solsw_inca(:,:)
    13201320      REAL,SAVE,ALLOCATABLE :: topsw0_inca(:,:), solsw0_inca(:,:)
    1321 #endif
    13221321#endif
    13231322      REAL,SAVE,ALLOCATABLE :: topswad(:), solswad(:) ! Aerosol direct effect.
     
    13391338      SAVE ok_ade, ok_aie, bl95_b0, bl95_b1
    13401339c$OMP THREADPRIVATE(ok_ade, ok_aie, bl95_b0, bl95_b1)
     1340      LOGICAL, SAVE :: aerosol_couple  ! true  : calcul des aerosols dans INCA
     1341                                       ! false : lecture des aerosol dans un fichier
     1342c$OMP THREADPRIVATE(aerosol_couple)   
    13411343
    13421344c
     
    14571459      allocate( topswad(klon), solswad(klon))
    14581460      allocate( topswai(klon), solswai(klon) )
    1459 #ifdef INCA_AER
    1460 #ifdef CPP_COUPLE
     1461#ifdef INCA
    14611462      allocate( topswad_inca(klon), solswad_inca(klon))
    14621463      allocate( topswad0_inca(klon), solswad0_inca(klon))
     
    14681469      allocate( cg_inca(klon,klev,9,2))
    14691470      allocate( ccm(klon,klev,2) )
    1470 #endif
    14711471#endif
    14721472      allocate( clwcon0(klon,klev),rnebcon0(klon,klev))
     
    15301530         solswai(:)=0.
    15311531         solswad(:)=0.
    1532 #ifdef INCA_AER
    1533 #ifdef CPP_COUPLE
     1532#ifdef INCA
    15341533         tau_inca(:,:,:,:) = 0.
    15351534         piz_inca(:,:,:,:) = 0.
     
    15471546         solsw0_inca(:,:)  = 0.
    15481547#endif
    1549 #endif
    15501548!rv
    15511549!ACo
     
    15701568cIM  .                  iflag_cldcon,ratqsbas,ratqshaut, if_ebil,
    15711569     .                  iflag_cldcon,ratqsbas,ratqshaut,
    1572      .                  ok_ade, ok_aie,
     1570     .                  ok_ade, ok_aie,aerosol_couple,
    15731571     .                  bl95_b0, bl95_b1,
    15741572     .                  iflag_thermals,nsplit_thermals)
     
    25782576cjq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr)
    25792577      IF (ok_ade.OR.ok_aie) THEN
    2580 #if defined(CPP_COUPLE) && !defined(INCA_AER)
    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
    2589 #if !defined(CPP_COUPLE)
    2590          ! Get sulfate aerosol distribution
    2591          CALL readsulfate(rjourvrai, debut, sulfate)
    2592          CALL readsulfate_preind(rjourvrai, debut, sulfate_pi)
    2593 
    2594          ! Calculate aerosol optical properties (Olivier Boucher)
    2595          CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl,
    2596      .        tau_ae, piz_ae, cg_ae, aerindex)
    2597 #endif
     2578         IF ( .NOT. aerosol_couple ) THEN
     2579            ! Get sulfate aerosol distribution
     2580            CALL readsulfate(rjourvrai, debut, sulfate)
     2581            CALL readsulfate_preind(rjourvrai, debut, sulfate_pi)
     2582           
     2583            ! Calculate aerosol optical properties (Olivier Boucher)
     2584            CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl,
     2585     .           tau_ae, piz_ae, cg_ae, aerindex)
    25982586cym
     2587         ENDIF
     2588
    25992589      ELSE
    26002590        tau_ae(:,:,:)=0.0
     
    27732763c parametres pour diagnostiques:
    27742764c
     2765
     2766      IF (aerosol_couple ) THEN
     2767#ifdef INCA_AER
     2768         sulfate(:,:) = ccm(:,:,1)
     2769         sulfate_pi(:,:) = ccm(:,:,2)
     2770#endif
     2771      ENDIF
     2772
    27752773      if (ok_newmicro) then
    27762774      CALL newmicro (paprs, pplay,ok_newmicro,
     
    27792777     .            flwp, fiwp, flwc, fiwc,
    27802778     e            ok_aie,
    2781 #if defined(CPP_COUPLE) && defined(INCA_AER) 
    2782      e            ccm(:,:,1), ccm(:,:,2),
    2783 #else
    27842779     e            sulfate, sulfate_pi,
    2785 #endif
    27862780     e            bl95_b0, bl95_b1,
    27872781     s            cldtaupi, re, fl)
     
    28192813      endif
    28202814     
    2821 
    2822 #if defined(CPP_COUPLE) && defined(INCA_AER)
    2823       CALL radlwsw_inca ! nouveau rayonnement (compatible Arpege-IFS)
    2824      e            (kdlon,kflev,dist, rmu0, fract,
    2825      e             paprs, pplay,zxtsol,albsol, albsollw, t_seri,q_seri,
    2826      e             wo,
    2827      e             cldfra, cldemi, cldtau,
    2828      s             heat,heat0,cool,cool0,radsol,albpla,
    2829      s             topsw,toplw,solsw,sollw,
    2830      s             sollwdown,
    2831      s             topsw0,toplw0,solsw0,sollw0,
    2832      s             lwdn0, lwdn, lwup0, lwup,
    2833      s             swdn0, swdn, swup0, swup,
    2834      e             ok_ade, ok_aie, ! new for aerosol radiative effects
    2835      e             tau_inca, piz_inca, cg_inca, ! ="=
    2836      s             topswad_inca, solswad_inca, ! ="=
    2837      s             topswad0_inca, solswad0_inca, ! ="=
    2838      s             topsw_inca, topsw0_inca,
    2839      s             solsw_inca, solsw0_inca,
    2840      e             cldtaupi, ! ="=
    2841      s             topswai_inca, solswai_inca) ! ="=
    2842 #else
    2843       CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS)
    2844      e            (dist, rmu0, fract,
    2845      e             paprs, pplay,zxtsol,albsol, albsollw, t_seri,q_seri,
    2846      e             wo,
    2847      e             cldfra, cldemi, cldtau,
    2848      s             heat,heat0,cool,cool0,radsol,albpla,
    2849      s             topsw,toplw,solsw,sollw,
    2850      s             sollwdown,
    2851      s             topsw0,toplw0,solsw0,sollw0,
    2852      s             lwdn0, lwdn, lwup0, lwup,
    2853      s             swdn0, swdn, swup0, swup,
    2854      e             ok_ade, ok_aie, ! new for aerosol radiative effects
    2855      e             tau_ae, piz_ae, cg_ae, ! ="=
    2856      s             topswad, solswad, ! ="=
    2857      e             cldtaupi, ! ="=
    2858      s             topswai, solswai) ! ="=
    2859 #endif
     2815      IF (aerosol_couple) THEN
     2816#ifdef INCA_AER
     2817         CALL radlwsw_inca     
     2818     e        (kdlon,kflev,dist, rmu0, fract, solaire,
     2819     e        paprs, pplay,zxtsol,albsol, albsollw, t_seri,q_seri,
     2820     e        wo,
     2821     e        cldfra, cldemi, cldtau,
     2822     s        heat,heat0,cool,cool0,radsol,albpla,
     2823     s        topsw,toplw,solsw,sollw,
     2824     s        sollwdown,
     2825     s        topsw0,toplw0,solsw0,sollw0,
     2826     s        lwdn0, lwdn, lwup0, lwup,
     2827     s        swdn0, swdn, swup0, swup,
     2828     e        ok_ade, ok_aie,   
     2829     e        tau_inca, piz_inca, cg_inca,
     2830     s        topswad_inca, solswad_inca,
     2831     s        topswad0_inca, solswad0_inca,
     2832     s        topsw_inca, topsw0_inca,
     2833     s        solsw_inca, solsw0_inca,
     2834     e        cldtaupi,         
     2835     s        topswai_inca, solswai_inca)
     2836#endif
     2837      ELSE
     2838         CALL radlwsw           ! nouveau rayonnement (compatible Arpege-IFS)
     2839     e        (dist, rmu0, fract,
     2840     e        paprs, pplay,zxtsol,albsol, albsollw, t_seri,q_seri,
     2841     e        wo,
     2842     e        cldfra, cldemi, cldtau,
     2843     s        heat,heat0,cool,cool0,radsol,albpla,
     2844     s        topsw,toplw,solsw,sollw,
     2845     s        sollwdown,
     2846     s        topsw0,toplw0,solsw0,sollw0,
     2847     s        lwdn0, lwdn, lwup0, lwup,
     2848     s        swdn0, swdn, swup0, swup,
     2849     e        ok_ade, ok_aie,   ! new for aerosol radiative effects
     2850     e        tau_ae, piz_ae, cg_ae, ! ="=
     2851     s        topswad, solswad, ! ="=
     2852     e        cldtaupi,         ! ="=
     2853     s        topswai, solswai) ! ="=
     2854      ENDIF
     2855
    28602856      itaprad = 0
    28612857      ENDIF
     
    30893085     I                   upwd,
    30903086     I                   dnwd,
     3087     I                   aerosol_couple,
    30913088#ifdef INCA
    30923089     I                   flxmass_w,
    3093 #if defined(INCA_AER) && defined(CPP_COUPLE)
    30943090     I                   tau_inca,
    30953091     I                   piz_inca,
     
    30973093     I                   ccm,
    30983094     I                   rfname,
    3099 #endif
    31003095#endif
    31013096     O                   tr_seri)
  • LMDZ4/branches/LMDZ4_V3_patches/libf/phylmd/phytrac.F

    r918 r954  
    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.