Changeset 6205
- Timestamp:
- Apr 24, 2026, 12:15:21 PM (10 days ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 2 edited
-
macv2sp.f90 (modified) (2 diffs)
-
mo_simple_plumes.f90 (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/macv2sp.f90
r6185 r6205 42 42 ! 43 43 REAL,DIMENSION(klon,klev,nplumes) :: aod550 44 REAL,DIMENSION(klon,nplumes) :: aod550_pl 44 45 REAL,DIMENSION(klon,klev) :: aod_prof, ssa_prof, asy_prof 45 46 REAL,DIMENSION(klon) :: aod_diag … … 132 133 ec550aer(:,:)=ec550aer(:,:)+od550SPaer_prof(:,:)/dz(:,:) 133 134 ! 134 135 ! Diagnostic AOD calculations for other wavelengths : 443 and 865 nm 135 ! 136 ! AOD calculations for diagnostics at other wavelengths : 443 and 865 nm 137 ! using AOD550(icol,iplume) : 138 aod550_pl(:,:)=SUM(aod550(:,:,:),dim=2) 139 ! 136 140 !--call to sp routine -- 443 nm 137 141 ! 138 142 CALL sp_aod_diag ( & 139 kl ev ,klon , l443 , &140 aod550 ,aod_diag )143 klon , l443 , & 144 aod550_pl ,aod_diag ) 141 145 142 146 od443aer(:)= od443aer(:)+aod_diag(:) 143 147 ! 144 148 !--call to sp routine -- 865 nm 145 149 ! 146 150 CALL sp_aod_diag ( & 147 kl ev ,klon , l865 , &148 aod550 ,aod_diag )151 klon , l865 , & 152 aod550_pl ,aod_diag ) 149 153 150 154 od865aer(:)= od865aer(:)+aod_diag(:) -
LMDZ6/trunk/libf/phylmd/mo_simple_plumes.f90
r6185 r6205 630 630 631 631 SUBROUTINE sp_aod_diag ( & 632 n levels ,ncol ,lambda , &633 aod550 ,aod_diag )632 ncol ,lambda , & 633 aod550_pl ,aod_diag ) 634 634 ! 635 635 ! ---------- 636 636 ! 637 637 INTEGER, INTENT(IN) :: & 638 nlevels, & !< number of levels639 638 ncol !< number of columns 640 639 641 640 REAL, INTENT(IN) :: & 642 641 lambda, & !< wavelength 643 aod550 (ncol,nlevels,nplumes) !< anthropogenic aod550 profilesby individual plumes642 aod550_pl(ncol,nplumes) !< anthropogenic aod550 map by individual plumes 644 643 645 644 REAL, INTENT(OUT) :: & 646 645 aod_diag(ncol) !< aerosol optical depth, diagnostic for wavelength "lambda" 647 646 648 INTEGER :: iplume, icol , k647 INTEGER :: iplume, icol 649 648 650 649 REAL :: & 651 650 lextinct !< anthropogenic aerosol extinction (function of wavelenth and aerosol type/plume) 652 651 653 ! initialize variables, including output 654 ! 655 DO icol=1,ncol 656 aod_diag(icol) = 0.0 657 ENDDO 652 ! initialize output 653 DO icol=1,ncol 654 aod_diag(icol) = 0.0 655 ENDDO 658 656 659 657 ! sum contribution from plumes to construct composite profiles of aerosol optical properties … … 661 659 DO iplume=1,nplumes 662 660 ! 663 ! distribute plume optical properties across its vertical profile weighting by optical depth and scaling for 664 ! wavelength using the angstrom parameter. 665 ! 666 ! lextinct = factor for aerosol extiction, eq(10) in Stevens et al 2017 667 ! Depends on 'iplume' via 'angstrom' (Note : angstrom=2. is prescribed for all plumes) 661 ! lextinct = factor for aerosol extiction, eq(10) in Stevens et al 2017 662 ! Depends on 'iplume' via 'angstrom' (Note : angstrom=2. is prescribed for all plumes) 668 663 lextinct = EXP(-angstrom(iplume) * LOG(lambda/550.0)) 669 664 670 ! Vertical sum of aod550(icol,k,,iplume) profile to 2D (icol,plume) 671 ! multipled by lextinct(iplume) to get aod for "lambda" wavelength from aod550 665 ! aod550_pl(icol,iplume) multiplied by lextinct(iplume) to get aod for "lambda" wavelength 672 666 ! version 1 compact 673 !aod_diag(:) = aod_diag(:) + SUM(aod550(:,:,iplume),dim=2) * lextinct667 !aod_diag(:) = aod_diag(:) + aod550_pl(:,iplume) * lextinct 674 668 ! version 2, loops 675 DO k=1,nlevels 676 DO icol = 1,ncol 677 aod_diag(icol) = aod_diag(icol)+ aod550(icol,k,iplume) * lextinct 678 ENDDO ! k (levels) 669 DO icol = 1,ncol 670 aod_diag(icol) = aod_diag(icol)+ aod550_pl(icol,iplume) * lextinct 679 671 ENDDO ! icol 680 672 ENDDO ! iplume
Note: See TracChangeset
for help on using the changeset viewer.
