- Timestamp:
- Jun 15, 2009, 6:49:35 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4-dev/libf/phylmd/readaerosol_optic.F90
r1179 r1181 4 4 pplay, paprs, t_seri, rhcl, & 5 5 mass_ins_aero, mass_ins_aero_pi, & 6 tau_aero, piz_aero, cg_aero ) 6 tau_aero, piz_aero, cg_aero, & 7 tausum_aero, tau3d_aero ) 7 8 8 9 ! This routine will : … … 12 13 13 14 USE dimphy 15 USE aerosol_mod 14 16 IMPLICIT NONE 15 17 … … 30 32 REAL, DIMENSION(klon,klev), INTENT(OUT) :: mass_ins_aero ! Total mass for all indissoluble aerosols 31 33 REAL, DIMENSION(klon,klev), INTENT(OUT) :: mass_ins_aero_pi ! -"- preindustrial values 32 REAL, DIMENSION(klon,klev,9,2), INTENT(OUT) :: tau_aero ! Aerosol optical thickness 33 REAL, DIMENSION(klon,klev,9,2), INTENT(OUT) :: piz_aero ! Single scattering albedo aerosol 34 REAL, DIMENSION(klon,klev,9,2), INTENT(OUT) :: cg_aero ! asymmetry parameter aerosol 34 REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(OUT) :: tau_aero ! Aerosol optical thickness 35 REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(OUT) :: piz_aero ! Single scattering albedo aerosol 36 REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(OUT) :: cg_aero ! asymmetry parameter aerosol 37 REAL, DIMENSION(klon,nwave,naero_spc), INTENT(OUT) :: tausum_aero 38 REAL, DIMENSION(klon,klev,nwave,naero_spc), INTENT(OUT) :: tau3d_aero 35 39 36 40 ! Local variables 37 41 !**************************************************************************************** 38 42 REAL, DIMENSION(klon) :: aerindex ! POLDER aerosol index 39 REAL, DIMENSION(klon,10) :: fractnat_allaer40 43 REAL, DIMENSION(klon,klev) :: sulfate ! SO4 aerosol concentration [ug/m3] 41 44 REAL, DIMENSION(klon,klev) :: bcsol ! BC soluble concentration [ug/m3] … … 43 46 REAL, DIMENSION(klon,klev) :: pomsol ! POM soluble concentration [ug/m3] 44 47 REAL, DIMENSION(klon,klev) :: pomins ! POM insoluble concentration [ug/m3] 48 REAL, DIMENSION(klon,klev) :: cidust ! DUST aerosol concentration [ug/m3] 49 REAL, DIMENSION(klon,klev) :: sscoarse ! SS Coarse concentration [ug/m3] 50 REAL, DIMENSION(klon,klev) :: sssupco ! SS Super Coarse concentration [ug/m3] 51 REAL, DIMENSION(klon,klev) :: ssacu ! SS Acumulation concentration [ug/m3] 45 52 REAL, DIMENSION(klon,klev) :: sulfate_pi 46 53 REAL, DIMENSION(klon,klev) :: bcsol_pi … … 48 55 REAL, DIMENSION(klon,klev) :: pomsol_pi 49 56 REAL, DIMENSION(klon,klev) :: pomins_pi 57 REAL, DIMENSION(klon,klev) :: cidust_pi 58 REAL, DIMENSION(klon,klev) :: sscoarse_pi 59 REAL, DIMENSION(klon,klev) :: sssupco_pi 60 REAL, DIMENSION(klon,klev) :: ssacu_pi 50 61 REAL, DIMENSION(klon,klev) :: pdel 51 REAL, DIMENSION(klon,klev,8) :: m_allaer 62 REAL, DIMENSION(klon,klev,naero_spc) :: m_allaer 63 REAL, DIMENSION(klon,naero_tot) :: fractnat_allaer 52 64 53 65 INTEGER :: k, i … … 59 71 ! Read and interpolate sulfate 60 72 IF ( flag_aerosol .EQ. 1 .OR. & 61 flag_aerosol .EQ. 4 .OR. &62 73 flag_aerosol .EQ. 6 ) THEN 63 74 … … 69 80 ! Read and interpolate bcsol and bcins 70 81 IF ( flag_aerosol .EQ. 2 .OR. & 71 flag_aerosol .EQ. 4 .OR. & 72 flag_aerosol .EQ. 5 ) THEN 82 flag_aerosol .EQ. 6 ) THEN 73 83 74 84 ! Get bc aerosol distribution … … 83 93 ! Read and interpolate pomsol and pomins 84 94 IF ( flag_aerosol .EQ. 3 .OR. & 85 flag_aerosol .EQ. 4 .OR. &86 flag_aerosol .EQ. 5 .OR. &87 95 flag_aerosol .EQ. 6 ) THEN 88 96 … … 95 103 96 104 105 ! Read and interpolate csssm, ssssm, assssm 106 IF (flag_aerosol .EQ. 4 .OR. & 107 flag_aerosol .EQ. 6 ) THEN 108 109 CALL readaerosol_interp(1 ,rjourvrai, debut, pplay, paprs, sscoarse,sscoarse_pi) 110 CALL readaerosol_interp(2 ,rjourvrai, debut, pplay, paprs, ssacu, ssacu_pi) 111 112 ELSE 113 sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0. 114 ssacu(:,:) = 0. ; ssacu_pi(:,:) = 0. 115 ENDIF 116 117 ! Read and interpolate cidustm 118 IF (flag_aerosol .EQ. 5 .OR. & 119 flag_aerosol .EQ. 6 ) THEN 120 121 CALL readaerosol_interp(6 , rjourvrai, debut, pplay, paprs, cidust, cidust_pi) 122 123 ELSE 124 cidust(:,:) = 0. ; cidust_pi(:,:) = 0. 125 ENDIF 126 127 ! 97 128 ! Store all aerosols in one variable 98 129 ! 99 ! ACo pour couplage aerosol offline 07/04/2009 100 ! Tableau contenant les masses pour tous les aerosols 101 ! les valeurs a zero seront a remplacer par les bons 102 ! tableaux lorsque les routines de lectures seront 103 ! ajoutees. 104 m_allaer(:,:,1) = 0. ! SSSSM || CSSSM ! Coarse Soluble Sea Salt Mass 105 m_allaer(:,:,2) = 0. ! ASSSM 130 m_allaer(:,:,1) = sscoarse(:,:) ! SSSSM || CSSSM 131 m_allaer(:,:,2) = ssacu(:,:) ! ASSSM 106 132 m_allaer(:,:,3) = bcsol(:,:) ! ASBCM 107 133 m_allaer(:,:,4) = pomsol(:,:) ! ASPOMM 108 134 m_allaer(:,:,5) = sulfate(:,:) ! ASSO4M || CSSO4M 109 m_allaer(:,:,6) = 0. ! CIDUSTM ! Coarse Insoluble DUST Mass135 m_allaer(:,:,6) = cidust(:,:) ! CIDUSTM 110 136 m_allaer(:,:,7) = bcins(:,:) ! AIBCM 111 137 m_allaer(:,:,8) = pomins(:,:) ! AIPOMM … … 114 140 ! Calculate the total mass of all indissoluble aersosols 115 141 ! 116 mass_ins_aero(:,:) = sulfate(:,:) + bcsol(:,:) + pomsol(:,:) 117 mass_ins_aero_pi(:,:) = sulfate_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) 142 mass_ins_aero(:,:) = sulfate(:,:) + bcsol(:,:) + pomsol(:,:) + & 143 sscoarse(:,:) + ssacu(:,:) + cidust(:,:) 144 mass_ins_aero_pi(:,:) = sulfate_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) + & 145 sscoarse_pi(:,:) + ssacu_pi(:,:) + cidust_pi(:,:) 118 146 119 147 !**************************************************************************************** … … 137 165 138 166 ! aeropt_5wv only for validation and diagnostics. 139 ! In this version no diagnostics are set.140 ! jg : may be desactivated if no diagnostics added.141 167 CALL aeropt_5wv( & 142 168 pdel, m_allaer, & 143 169 pdtphys, rhcl, aerindex, & 144 flag_aerosol, pplay, t_seri) 170 flag_aerosol, pplay, t_seri, & 171 tausum_aero, tau3d_aero) 145 172 ELSE 146 173
Note: See TracChangeset
for help on using the changeset viewer.