From 0656fbab8c7a9486bc1379147f8d9306bf92065a Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Tue, 19 Apr 2022 14:35:49 -0400 Subject: [PATCH 01/28] Added OpenMP to CMakeLists.txt files and GOCART2G_Process.F90 --- .../CA2G_GridComp/CMakeLists.txt | 4 +- ESMF/GOCART2G_GridComp/CMakeLists.txt | 4 + .../DU2G_GridComp/CMakeLists.txt | 4 + .../GA_Environment/CMakeLists.txt | 4 + .../NI2G_GridComp/CMakeLists.txt | 4 + .../SS2G_GridComp/CMakeLists.txt | 4 +- .../SU2G_GridComp/CMakeLists.txt | 4 + Process_Library/CMakeLists.txt | 3 + Process_Library/GOCART2G_Process.F90 | 101 ++++++++++++++++-- 9 files changed, 124 insertions(+), 8 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt index b264938b..40a8319a 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt @@ -14,4 +14,6 @@ foreach ( file ${rc_files} ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() - +if (OMP) + target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) +endif () diff --git a/ESMF/GOCART2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/CMakeLists.txt index eea75125..6ab7b210 100644 --- a/ESMF/GOCART2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/CMakeLists.txt @@ -31,3 +31,7 @@ esma_add_library (${this} mapl_acg (${this} GOCART2G_StateSpecs.rc IMPORT_SPECS EXPORT_SPECS INTERNAL_SPECS GET_POINTERS DECLARE_POINTERS) + +if (OMP) + target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) +endif () diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt index 79ddef2e..acd0d3b7 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt @@ -13,3 +13,7 @@ foreach ( file ${rc_files} ) get_filename_component( dir ${file} DIRECTORY ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() + +if (OMP) + target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) +endif () diff --git a/ESMF/GOCART2G_GridComp/GA_Environment/CMakeLists.txt b/ESMF/GOCART2G_GridComp/GA_Environment/CMakeLists.txt index d4e86aff..e69bfa51 100644 --- a/ESMF/GOCART2G_GridComp/GA_Environment/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/GA_Environment/CMakeLists.txt @@ -4,3 +4,7 @@ esma_add_library (${this} SRCS ${this}Mod.F90 DEPENDENCIES MAPL Chem_Shared2G Process_Library ) + +if (OMP) + target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) +endif () diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt index 4bd4ee20..6b85beee 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt @@ -13,3 +13,7 @@ foreach ( file ${rc_files} ) get_filename_component( dir ${file} DIRECTORY ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() + +if (OMP) + target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) +endif () diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt index 34da0215..83a0e243 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt @@ -14,4 +14,6 @@ foreach ( file ${rc_files} ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() - +if (OMP) + target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) +endif () diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt index a88ab662..541f66cb 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt @@ -13,3 +13,7 @@ foreach ( file ${rc_files} ) get_filename_component( dir ${file} DIRECTORY ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() + +if (OMP) + target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) +endif () diff --git a/Process_Library/CMakeLists.txt b/Process_Library/CMakeLists.txt index be48bcee..38d8ebdb 100644 --- a/Process_Library/CMakeLists.txt +++ b/Process_Library/CMakeLists.txt @@ -9,3 +9,6 @@ esma_add_library(${this} SRCS ${srcs} DEPENDENCIES esmf NetCDF::NetCDF_Fortran ) +if (OMP) + target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) +endif() diff --git a/Process_Library/GOCART2G_Process.F90 b/Process_Library/GOCART2G_Process.F90 index fb10dc2b..24ccde7e 100644 --- a/Process_Library/GOCART2G_Process.F90 +++ b/Process_Library/GOCART2G_Process.F90 @@ -663,6 +663,9 @@ subroutine DustEmissionK14( km, t_soil, w_top, rho_air, & allocate(w_g(i2,j2), w_gt(i2,j2), f_veg(i2,j2), clay(i2,j2), silt(i2,j2), k_gamma(i2,j2)) allocate(z0s(i2,j2), Dp_size(i2,j2)) +!AOO initialization + w_g=0.;w_gt=0.;f_veg=0.;clay=0.;silt=0.;k_gamma=0.;z0s=0.;Dp_size=0. +!AOO end initialization ! typical size of soil particles for optimal saltation is about 75e-6m Dp_size = 75e-6 @@ -1185,6 +1188,9 @@ subroutine Chem_SettlingSimple ( km, klid, flag, cdt, grav, & allocate(dz(i2,j2,km), radius(i2,j2,km), rhop(i2,j2,km), vsettle(i2,j2,km), qa(i2,j2,km)) allocate(cmass_before(i2,j2), cmass_after(i2,j2)) +!AOO initialization + dz=0.;radius=0.;rhop=0.;vsettle=0.;qa=0. +!AOO end initialization cmass_before = 0.d0 cmass_after = 0.d0 @@ -1361,6 +1367,9 @@ subroutine Chem_Settling ( km, klid, bin, flag, cdt, grav, & allocate(dz(i2,j2,km), radius(i2,j2,km), rhop(i2,j2,km), vsettle(i2,j2,km), qa(i2,j2,km)) allocate(cmass_before(i2,j2), cmass_after(i2,j2)) +!AOO initialization + dz=0.;radius=0.;rhop=0.;vsettle=0.;qa=0. +!AOO end initialization cmass_before = 0.d0 cmass_after = 0.d0 @@ -1989,6 +1998,10 @@ subroutine Chem_Settling2Gorig (km, klid, flag, bin, int_qa, grav, delp, & allocate(dz, mold=rhoa); allocate(dzd(i2,j2,km), vsd(i2,j2,km), qa(i2,j2,km), vsettle(i2,j2,km), qa_temp(i2,j2,km)) allocate(cmass_before(i2,j2), cmass_after(i2,j2)) +!AOO initialization + dz=0.;vsettle=0. + dzd=0.d0;vsd=0.d0;qa=0.d0;qa_temp=0.d0;cmass_before=0.d0;cmass_after=0.d0 +!AOO end initialization ! Handle the fact that hghte may be in the range [1,km+1] or [0,km] ! ----------------------------------------------------------------- @@ -2332,6 +2345,11 @@ subroutine Chem_SettlingSimpleOrig ( km, klid, flag, grav, cdt, radiusInp, rhopI allocate(dzd(i2,j2,km), vsd(i2,j2,km), qa(i2,j2,km), vsettle(i2,j2,km), qa_temp(i2,j2,km)) allocate(cmass_before(i2,j2), cmass_after(i2,j2), qdel(i2,j2), dp(i2,j2), & dpm1(i2,j2), qsrc(i2,j2)) +!AOO initialization + dz=0.;vsettle=0. + dzd=0.d0;vsd=0.d0;qa=0.d0;qa_temp=0.d0;cmass_before=0.d0;cmass_after=0.d0 + qdel=0.d0;dp=0.d0;dpm1=0.d0;qsrc=0.d0 +!AOO end initialization ! Handle the fact that hghte may be in the range [1,km+1] or [0,km] ! ----------------------------------------------------------------- @@ -2570,6 +2588,9 @@ subroutine DryDeposition ( km, tmpu, rhoa, hghte, oro, ustar, pblh, shflux, & allocate(dz(i2,j2),rmu(i2,j2),Ra(i2,j2),Rs(i2,j2),vdep(i2,j2), & obk(i2,j2)) +!AOO initialization + dz=0.;rmu=0.;Ra=0.;Rs=0.;vdep=0.;obk=0. +!AOO end initialization ! Calculate the viscosity and thickness of the surface level dz = hghte(:,:,km-1) - hghte(:,:,km) @@ -2819,6 +2840,9 @@ subroutine WetRemovalGOCART2G ( km, klid, n1, n2, bin_ind, cdt, aero_type, kin, ! Allocate arrays allocate(c_h2o(i2,j2,km), cldliq(i2,j2,km), cldice(i2,j2,km), pdog(i2,j2,km), & delz(i2,j2,km), dpfli(i2,j2,km)) +!AOO initialization + c_h2o=0.;cldliq=0.;cldice=0.;pdog=0.;delz=0.;dpfli=0. +!AOO end initialization ! Initialize local variables ! -------------------------- @@ -2838,6 +2862,9 @@ subroutine WetRemovalGOCART2G ( km, klid, n1, n2, bin_ind, cdt, aero_type, kin, allocate(fd(km,nbins),stat=ios) allocate(dc(nbins),stat=ios) +!AOO initialization + fd=0.;dc=0. +!AOO end initialization if( associated(fluxout) ) fluxout(i1:i2,j1:j2,bin_ind) = 0.0 @@ -2851,7 +2878,9 @@ subroutine WetRemovalGOCART2G ( km, klid, n1, n2, bin_ind, cdt, aero_type, kin, Kstar298 = 1.05d6 H298_R = -4.2d3 else + !$omp critical (G2G_proc_1) print *, 'stop in WetRemoval, need Kstar298 and H298_R' + !$omp end critical (G2G_proc_1) rc = __FAIL__ return endif @@ -3352,6 +3381,9 @@ subroutine Aero_Compute_Diags (mie_table, km, klid, nbegin, nbins, rlow, rup, ch j2 = size(rhoa,2) allocate(fPMfm(nbins)) allocate(fPM25(nbins)) +!AOO initialization + fPMfm=0.;fPM25=0. +!AOO end initialization ! Get the wavelength indices ! -------------------------- @@ -3385,7 +3417,9 @@ subroutine Aero_Compute_Diags (mie_table, km, klid, nbegin, nbins, rlow, rup, ch else if ((wavelengths_profile(i) .ge. 8.68e-7) .and. (wavelengths_profile(i) .le. 8.71e-7)) then wavelengths_index_profile(i) = 4. else + !$omp critical (G2G_proc_2) print*,'wavelengths_profile of ',wavelengths_profile(i),' is an invalid value.' + !$omp end critical (G2G_proc_2) return end if end do @@ -3401,7 +3435,9 @@ subroutine Aero_Compute_Diags (mie_table, km, klid, nbegin, nbins, rlow, rup, ch else if ((wavelengths_vertint(i) .ge. 8.68e-7) .and. (wavelengths_vertint(i) .le. 8.71e-7)) then wavelengths_index_vertint(i) = 4. else + !$omp critical (G2G_proc_3) print*,'wavelengths_vertint of ',wavelengths_vertint(i),' is an invalid value.' + !$omp end critical (G2G_proc_3) return end if end do @@ -3415,8 +3451,11 @@ subroutine Aero_Compute_Diags (mie_table, km, klid, nbegin, nbins, rlow, rup, ch ilam870 .ne. 0. .and. & ilam470 .ne. ilam870) do_angstrom = .true. - if( present(angstrom) .and. do_angstrom ) then - allocate(tau470(i1:i2,j1:j2), tau870(i1:i2,j1:j2)) + if( present(angstrom) ) then + if (do_angstrom ) then + allocate(tau470(i1:i2,j1:j2), tau870(i1:i2,j1:j2)) + tau470=0.;tau870=0. !AOO initialization + end if end if ! Compute the fine mode (sub-micron) and PM2.5 bin-wise fractions @@ -4063,7 +4102,9 @@ subroutine SeasaltEmission ( rLow, rUp, method, u10m, v10m, ustar, pi, & w => ustar case default + !$omp critical (G2G_proc_4) print *, 'GOCART2G_Process.F90 - SeasaltEmission - missing algorithm method' + !$omp end critical (G2G_proc_4) rc = __FAIL__ return @@ -4240,6 +4281,7 @@ subroutine hoppelCorrection (radius, rhop, rh, dz, ustar, rhFlag, & rc = __SUCCESS__ fhoppel = 1.0 allocate(vsettle, mold=rh) + vsettle=0. !AOO initialization do j = 1, ubound(rh,2) do i = 1, ubound(rh,1) @@ -4377,6 +4419,10 @@ subroutine CAEmission (mie_table, km, nbins, cdt, grav, prefix, ratPOM, eAircraf allocate(factor(i2,j2), srcHydrophobic(i2,j2), srcHydrophilic(i2,j2), srcBiofuel(i2,j2), & srcBiomass(i2,j2), srcAnthro(i2,j2), srcBiogenic(i2,j2), f_bb_(i2,j2), exttau_bb_(i2,j2)) +!AOO initialization + factor=0.;srcHydrophobic=0.;srcHydrophilic=0.;srcBiofuel=0. + srcBiomass=0.;srcAnthro=0.;srcBiogenic=0.;f_bb_=0.;exttau_bb_=0. +!AOO end initialization ! Emission factors scaling from source files to desired mass quantity eBiomass = ratPOM @@ -4426,6 +4472,9 @@ subroutine CAEmission (mie_table, km, nbins, cdt, grav, prefix, ratPOM, eAircraf allocate(p100, mold=pblh) allocate(p500, mold=pblh) allocate(pPBL, mold=pblh) +!AOO initialization + p0=0.;z0=0.;p100=0.;p500=0.;pPBL=0. +!AOO end initialization ps = 0.0 do k = 1, km ps(i1:i2,j1:j2) = ps(i1:i2,j1:j2) + delp(i1:i2,j1:j2,k) @@ -5461,6 +5510,9 @@ subroutine SulfateDistributeEmissions ( km, nbins, cdt, grav, nymd, nhms, & srcSO2 = 0.0 srcSO4 = 0.0 srcDMS = 0.0 +!AOO initialization + srcSO4anthro=0.;srcSO2anthro=0.;srcSO2bioburn=0. +!AOO end initialization if ((nVolc <= 0) .and. associated(SU_emis)) SU_emis = 0.0 !SU_emis is usually set to zero in SUvolcanicEmissions. ! !If there are no volcanic emissions, we need to set it to zero here. @@ -5503,6 +5555,9 @@ subroutine SulfateDistributeEmissions ( km, nbins, cdt, grav, nymd, nhms, & allocate(p100, mold=pblh) allocate(p500, mold=pblh) allocate(pPblh, mold=pblh) +!AOO initialization + p0=0.;z0=0.;p100=0.;p500=0.;pPblh=0. +!AOO end initialization ps = 0.0 do k = 1, km @@ -5787,6 +5842,9 @@ subroutine SUvolcanicEmissions (nVolc, vStart, vEnd, vSO2, vElev, vCloud, iPoint allocate(z0, mold=area) z0 = hghte(:,:,km) +!AOO initialization + z0=0. +!AOO end initialization do it = 1, nVolc so2volcano = 0. @@ -5943,6 +6001,9 @@ subroutine SulfateUpdateOxidants (nymd_current, nhms_current, lonRad, latRad, & allocate(cossza(i1:i2,j1:j2), sza(i1:i2,j1:j2), tcosz(i1:i2,j1:j2), & tday(i1:i2,j1:j2), tnight(i1:i2,j1:j2)) +!AOO initialization + cossza=0.;sza=0.;tcosz=0.;tday=0.;tnight=0. +!AOO end initialization ! Update emissions/production if necessary (daily) ! ----------------------------------------------- @@ -6332,6 +6393,9 @@ subroutine SU_Wet_Removal ( km, nbins, klid, cdt, kin, grav, airMolWght, delp, f allocate(fd(km,nbins),__STAT__) allocate(dc(nbins),__STAT__) allocate(dpfli(i1:i2, j1:j2, km),__STAT__) +!AOO initialization + fd=0.d0;dc=0.d0;dpfli=0.d0 +!AOO end initialization ! Duration of rain: ls = model timestep, cv = 1800 s (<= cdt) Td_ls = cdt @@ -6846,6 +6910,9 @@ subroutine SU_Compute_Diags ( km, klid, rmed, sigma, rhop, grav, pi, nSO4, mie_t i2 = ubound(tmpu, 1) allocate(tau470(i1:i2,j1:j2), tau870(i1:i2,j1:j2)) +!AOO initialization + tau470=0.;tau870=0. +!AOO end initialization ! Get the wavelength indices ! -------------------------- @@ -6880,7 +6947,9 @@ subroutine SU_Compute_Diags ( km, klid, rmed, sigma, rhop, grav, pi, nSO4, mie_t else if ((wavelengths_profile(i) .ge. 8.69e-7) .and. (wavelengths_profile(i) .le. 8.71e-7)) then wavelengths_index_profile(i) = 4. else + !$omp critical (G2G_proc_5) print*,'wavelengths_profile of ',wavelengths_profile(i),' is an invalid value.' + !$omp end critical (G2G_proc_5) return end if end do @@ -6896,7 +6965,9 @@ subroutine SU_Compute_Diags ( km, klid, rmed, sigma, rhop, grav, pi, nSO4, mie_t else if ((wavelengths_vertint(i) .ge. 8.69e-7) .and. (wavelengths_vertint(i) .le. 8.71e-7)) then wavelengths_index_vertint(i) = 4. else + !$omp critical (G2G_proc_6) print*,'wavelengths_profile of ',wavelengths_profile(i),' is an invalid value.' + !$omp end critical (G2G_proc_6) return end if end do @@ -7262,6 +7333,9 @@ subroutine SulfateChemDriver (km, klid, cdt, PI, radToDeg, von_karman, & allocate(drydepositionfrequency, mold=oro) allocate(cossza, mold=oro) allocate(sza, mold=oro) +!AOO initialization + drydepositionfrequency=0.;cossza=0.;sza=0. +!AOO end initialization ! Reset the production terms allocate(pSO2_DMS, mold=tmpu) @@ -7464,6 +7538,7 @@ subroutine SulfateChemDriver_DMS (km, klid, cdt, airMolWght, nAvogadro, cpd, & allocate(pSO2_DMS, mold=tmpu) allocate(pMSA_DMS, mold=tmpu) + pSO2_DMS=0.;pMSA_DMS=0. !AOO initialization ! spatial loop do k = klid, km @@ -7629,6 +7704,7 @@ subroutine SulfateChemDriver_SO2 (km, klid, cdt, airMolWght, nAvogadro, cpd, gra allocate(pSO4g_SO2, mold=tmpu) allocate(pSO4aq_SO2, mold=tmpu) allocate(fout(i2,j2)) + pSO4g_SO2=0.;pSO4aq_SO2=0.;fout=0. !AOO initialization ! Conversion of SO2 mmr to SO2 vmr fMR = airMolWght / fMassSO2 @@ -7795,6 +7871,7 @@ subroutine SulfateChemDriver_SO4 (km, klid, cdt, grav, qa, nSO4, delp, drydepf, i2 = ubound(qa, 1) allocate(fout(i2,j2)) + fout=0. !AOO initialization ! Initialize flux variable fout = 0. @@ -7895,6 +7972,7 @@ subroutine SulfateChemDriver_MSA (km, klid, cdt, grav, qa, nMSA, delp, drydepf, i2 = ubound(qa, 1) allocate(fout(i2,j2)) + fout=0. !AOO initialization ! spatial loop do k = klid, km @@ -8865,9 +8943,11 @@ subroutine RPMARES( SO4, GNO3, GNH3, RH, TEMP, & ! validity check for negative concentration IF ( TSO4 < 0.0d0 .OR. TNO3 < 0.0d0 .OR. TNH4 < 0.0d0 ) THEN + !$omp critical (G2G_proc_7) PRINT*, 'TSO4 : ', TSO4 PRINT*, 'TNO3 : ', TNO3 PRINT*, 'TNH4 : ', TNH4 + !$omp end critical (G2G_proc_7) !.sds CALL GEOS_CHEM_STOP @@ -9730,7 +9810,9 @@ SUBROUTINE CUBIC( A2, A1, A0, NR, CRUTES, rc ) NR = 0 !.sds no such module - what is ours? !.sds CALL ERROR_STOP( 'PHI < 1d-20', 'CUBIC (rpmares_mod.f)' ) + !$omp critical (G2G_proc_8) print *,'PHI < 1d-20 in CUBIC (rpmares_mod.f)' + !$omp end critical (G2G_proc_8) err_msg = 'PHI < 1d-20 in CUBIC (rpmares_mod.f):' call PrintError & & (err_msg, .true., 0, 0, 0, 0, 0.0d0, 0.0d0, __RC_NO_OPT__) @@ -10110,6 +10192,7 @@ subroutine PrintError & !------------------------------------------------------------------------- rc = __SUCCESS__ !BOC + !$omp critical (G2G_proc_9) Write (6,*) Write (6,*) & '--------------------------------------------------------------' @@ -10131,6 +10214,7 @@ subroutine PrintError & Write (6,*) & '--------------------------------------------------------------' Write (6,*) + !$omp end critical (G2G_proc_9) if (err_do_stop) then rc = __FAIL__ @@ -10487,7 +10571,7 @@ subroutine ReadPointEmissions( nymd, filename, nPts, vLat, vLon, vBase, vTop, vE character(:), allocatable :: label_ real, allocatable :: table(:,:) integer :: nCols - integer :: status + integer :: status, status1, status2, status3 if (present(label)) then label_ = trim(label) @@ -10496,9 +10580,14 @@ subroutine ReadPointEmissions( nymd, filename, nPts, vLat, vLon, vBase, vTop, vE end if reader = EmissionReader() - call reader%open(filename, __RC__) - table = reader%read_table(label=label_, __RC__) - call reader%close(__RC__) + !$omp critical (process1) + call reader%open(filename, rc=status1) + table = reader%read_table(label=label_, rc=status2) + call reader%close(rc=status3) + !$omp end critical (process1) + __VERIFY__(status1) + __VERIFY__(status2) + __VERIFY__(status3) nCols = size(table,1) nPts = size(table,2) From 921364e7a0b69c4541f6f11c186d4751981f7dfa Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Tue, 19 Apr 2022 16:03:57 -0400 Subject: [PATCH 02/28] Added threading support to GOCART2G_GridCompMod.F90 --- .../GOCART2G_GridCompMod.F90 | 179 +++++++++++++++++- 1 file changed, 172 insertions(+), 7 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 index 3b5bd054..ab4b622e 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 @@ -50,6 +50,7 @@ module GOCART2G_GridCompMod type(Constituent) :: NI real, allocatable :: wavelengths_profile(:) ! wavelengths for profile aop [nm] real, allocatable :: wavelengths_vertint(:) ! wavelengths for vertically integrated aop [nm] + logical :: use_threads = .FALSE. end type GOCART_State type wrap_ @@ -158,6 +159,7 @@ subroutine SetServices (GC, RC) call MAPL_ConfigSetAttribute (cf, self%wavelengths_profile, label='wavelengths_for_profile_aop_in_nm:', __RC__) call MAPL_ConfigSetAttribute (cf, self%wavelengths_vertint, label='wavelengths_for_vertically_integrated_aop_in_nm:', __RC__) call MAPL_ConfigSetAttribute (cf, wavelengths_diagmie, label='aerosol_monochromatic_optics_wavelength_in_nm_from_LUT:', __RC__) + call ESMF_ConfigGetAttribute (myCF, self%use_threads, label='use_threads:', default=.FALSE., __RC__) ! Get instances to determine what children will be born ! ----------------------------------------------------- @@ -479,7 +481,83 @@ subroutine add_aero_states_(instances) end subroutine add_aero_states_ end subroutine Initialize - + + recursive subroutine Run1(GC, import, export, clock, RC) + !$ use omp_lib + type (ESMF_GridComp), intent(inout) :: GC ! Gridded component + type (ESMF_State), intent(inout) :: import ! Import state + type (ESMF_State), intent(inout) :: export ! Export state + type (ESMF_Clock), intent(inout) :: clock ! The clock + integer, optional, intent( out) :: RC ! Error code: + + type (MAPL_MetaComp), pointer :: MAPL + type(GOCART_State), pointer :: self + type(wrap_) :: wrap + integer :: thread + type(ESMF_State) :: subimport + type(ESMF_State) :: subexport + integer :: status + integer, allocatable :: statuses(:) + integer :: num_threads + character(len=ESMF_MAXSTR) :: Iam = "Run1" + type(ESMF_VM) :: vm + type(ESMF_GridComp) :: thread_gc + integer :: i, me + + !call start_global_time_profiler('run1()') + call ESMF_UserCompGetInternalState (GC, 'GOCART_State', wrap, status) + VERIFY_(status) + self => wrap%ptr + + call ESMF_GridCompGet (GC, vm=vm, __RC__) + call ESMF_VMGet(vm, localPet=me, __RC__) + + if(self%use_threads) then + call MAPL_GetObjectFromGC (GC, MAPL, __RC__) + if(MAPL%is_threading_active()) then + call run_thread(GC, import, export, clock, __RC__) + else + !call start_global_time_profiler('activate_threads') + num_threads = 1 + !$ num_threads = omp_get_max_threads() + call MAPL%activate_threading(num_threads, __RC__) + !call stop_global_time_profiler('activate_threads') + !call start_global_time_profiler('parallel') + + allocate(statuses(num_threads), __STAT__) + statuses=0 + !$omp parallel default(none), & + !$omp& private(thread, subimport, subexport, thread_gc), & + !$omp& shared(gc, statuses, clock, MAPL) + + ! !$omp critical (RUN1) + thread = 0 + !$ thread = omp_get_thread_num() + + subimport = MAPL%get_import_state() + subexport = MAPL%get_export_state() + thread_gc = MAPL%get_gridcomp() + + call run_thread(thread_gc, subimport, subexport, clock, rc=statuses(thread+1)) + ! !$omp end critical (RUN1) + !$omp end parallel + !call stop_global_time_profiler('parallel') + + if (any(statuses /= ESMF_SUCCESS)) then + _FAIL('some thread failed') + end if + deallocate(statuses, __STAT__) + !call start_global_time_profiler('deactivate_threads') + call MAPL%deactivate_threading(__RC__) + !call stop_global_time_profiler('deactivate_threads') + end if + else + call run_thread(GC, import, export, clock, __RC__) + end if + !call stop_global_time_profiler('run1()') + RETURN_(ESMF_SUCCESS) + end subroutine Run1 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !BOP ! !IROUTINE: RUN -- Run method for GOCART2G @@ -487,7 +565,8 @@ end subroutine Initialize ! !INTERFACE: - subroutine Run1 (GC, import, export, clock, RC) + subroutine run_thread (GC, import, export, clock, RC) + !$ use omp_lib ! !ARGUMENTS: type (ESMF_GridComp), intent(inout) :: GC ! Gridded component @@ -524,8 +603,7 @@ subroutine Run1 (GC, import, export, clock, RC) ! Get my internal MAPL_Generic state ! ----------------------------------- - call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS ) - VERIFY_(STATUS) + call MAPL_GetObjectFromGC ( GC, MAPL, __RC__ ) ! Get parameters from generic state. ! ----------------------------------- @@ -540,7 +618,90 @@ subroutine Run1 (GC, import, export, clock, RC) RETURN_(ESMF_SUCCESS) - end subroutine Run1 + end subroutine run_thread + +!============================================================================ +!BOP +! !IROUTINE: RUN2 -- Run2 method for GOCART2G component + +! !INTERFACE: + + recursive subroutine Run2(GC, import, export, clock, RC) + !$ use omp_lib + type (ESMF_GridComp), intent(inout) :: GC ! Gridded component + type (ESMF_State), intent(inout) :: import ! Import state + type (ESMF_State), intent(inout) :: export ! Export state + type (ESMF_Clock), intent(inout) :: clock ! The clock + integer, optional, intent( out) :: RC ! Error code: + + type (MAPL_MetaComp), pointer :: MAPL + type(GOCART_State), pointer :: self + type(wrap_) :: wrap + integer :: thread + type(ESMF_State) :: subimport + type(ESMF_State) :: subexport + integer :: status + integer, allocatable :: statuses(:) + integer :: num_threads + character(len=ESMF_MAXSTR) :: Iam = "Run2" + type(ESMF_VM) :: vm + type(ESMF_GridComp) :: thread_gc + integer :: i, me + + !call start_global_time_profiler('run2()') + call ESMF_UserCompGetInternalState (GC, 'GOCART_State', wrap, status) + VERIFY_(status) + self => wrap%ptr + + call ESMF_GridCompGet (GC, vm=vm, __RC__) + call ESMF_VMGet(vm, localPet=me, __RC__) + + if(self%use_threads) then + call MAPL_GetObjectFromGC (GC, MAPL, __RC__) + if(MAPL%is_threading_active()) then + call run_thread2(GC, import, export, clock, __RC__) + else + !call start_global_time_profiler('activate_threads2') + num_threads = 1 + !$ num_threads = omp_get_max_threads() + call MAPL%activate_threading(num_threads, __RC__) + !call stop_global_time_profiler('activate_threads2') + !call start_global_time_profiler('parallel2') + + allocate(statuses(num_threads), __STAT__) + statuses=0 + !$omp parallel default(none), & + !$omp& private(thread, subimport, subexport, thread_gc), & + !$omp& shared(gc, statuses, clock, MAPL) + + ! !$omp critical (RUN2) + thread = 0 + !$ thread = omp_get_thread_num() + + subimport = MAPL%get_import_state() + subexport = MAPL%get_export_state() + thread_gc = MAPL%get_gridcomp() + + call run_thread2(thread_gc, subimport, subexport, clock, rc=statuses(thread+1)) + ! !$omp end critical (RUN2) + + !$omp end parallel + !call stop_global_time_profiler('parallel2') + + if (any(statuses /= ESMF_SUCCESS)) then + _FAIL('some thread failed') + end if + deallocate(statuses, __STAT__) + !call start_global_time_profiler('deactivate_threads2') + call MAPL%deactivate_threading(__RC__) + !call stop_global_time_profiler('deactivate_threads2') + end if + else + call run_thread2(GC, import, export, clock, __RC__) + end if + !call stop_global_time_profiler('run2()') + RETURN_(ESMF_SUCCESS) + end subroutine Run2 !============================================================================ !BOP @@ -548,7 +709,7 @@ end subroutine Run1 ! !INTERFACE: - subroutine Run2 (GC, import, export, clock, RC) + subroutine run_thread2 (GC, import, export, clock, RC) ! !ARGUMENTS: type (ESMF_GridComp), intent(inout) :: GC ! Gridded component @@ -681,8 +842,10 @@ subroutine Run2 (GC, import, export, clock, RC) end do if (ind550 == 0) then + !$omp critical (G2G_1) print*,trim(Iam),' : 550nm wavelengths is not present in GOCART2G_GridComp.rc.',& ' Cannot produce TOTANGSTR variable without 550nm wavelength.' + !$omp end critical (G2G_1) VERIFY_(100) end if @@ -981,7 +1144,7 @@ subroutine Run2 (GC, import, export, clock, RC) RETURN_(ESMF_SUCCESS) - end subroutine Run2 + end subroutine run_thread2 !=============================================================================== @@ -2170,7 +2333,9 @@ subroutine get_mixRatioSum (state, rc) end if case default + !$omp critical (G2G_2) print *,"Invalid aerosolName of '",trim(aeroName), "' in GOCART2G::get_mixRatioSum" + !$omp end critical (G2G_2) end select contains From d4aa5afdc200e12e36826eff1dacdbd0f5c6d276 Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Tue, 19 Apr 2022 23:17:44 -0400 Subject: [PATCH 03/28] Modified GOCART2G components for OpenMP --- .../CA2G_GridComp/CA2G_GridCompMod.F90 | 58 ++++++--- .../DU2G_GridComp/DU2G_GridCompMod.F90 | 66 ++++++---- .../NI2G_GridComp/NI2G_GridCompMod.F90 | 20 +-- .../NI2G_GridComp/NI2G_StateSpecs.rc | 11 +- .../SS2G_GridComp/SS2G_GridCompMod.F90 | 12 +- .../SS2G_GridComp/SS2G_StateSpecs.rc | 1 + .../SU2G_GridComp/SU2G_GridCompMod.F90 | 115 ++++++++++-------- .../SU2G_GridComp/SU2G_StateSpecs.rc | 9 +- 8 files changed, 182 insertions(+), 110 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 index 42b18d9a..b18e06a0 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 @@ -18,6 +18,7 @@ module CA2G_GridCompMod use GOCART2G_Process ! GOCART2G process library use GA_EnvironmentMod use MAPL_StringTemplate, only: StrTemplate + !$ use omp_lib implicit none private @@ -38,6 +39,15 @@ module CA2G_GridCompMod !=========================================================================== ! !Carbonaceous aerosol state + type :: ThreadWorkspace + integer :: nPts = -1 + integer, allocatable, dimension(:) :: pstart, pend + real, allocatable, dimension(:) :: pLat, & + pLon, & + pBase, & + pTop, & + pEmis + end type ThreadWorkspace type, extends(GA_Environment) :: CA2G_GridComp integer :: myDOW = -1 ! my Day of the week: Sun=1, Mon=2,...,Sat=7 real :: ratPOM = 1.0 ! Ratio of POM to OC mass @@ -50,14 +60,7 @@ module CA2G_GridCompMod ! !Workspae for point emissions logical :: doing_point_emissions = .false. character(len=255) :: point_emissions_srcfilen ! filename for pointwise emissions - integer :: nPts = -1 - integer, allocatable, dimension(:) :: pstart, pend - real, allocatable, dimension(:) :: pLat, & - pLon, & - pBase, & - pTop, & - pEmis - + type(ThreadWorkspace), allocatable :: workspaces(:) end type CA2G_GridComp type wrap_ @@ -102,6 +105,7 @@ subroutine SetServices (GC, RC) integer :: i, nbins real :: DEFVAL logical :: data_driven = .true. + integer :: num_threads __Iam__('SetServices') @@ -125,6 +129,9 @@ subroutine SetServices (GC, RC) ! ------------------------------------- allocate (self, __STAT__) wrap%ptr => self + num_threads = 1 + !$ num_threads = omp_get_max_threads() + allocate(self%workspaces(0:num_threads-1), __STAT__) ! Load resource file ! ------------------- @@ -703,6 +710,8 @@ subroutine Run1 (GC, import, export, clock, RC) logical :: fileExists real, pointer, dimension(:,:,:) :: intPtr_phobic, intPtr_philic + type(ThreadWorkspace), pointer :: workspace + integer :: thread, jstart, jend #include "CA2G_DeclarePointer___.h" @@ -763,7 +772,9 @@ subroutine Run1 (GC, import, export, clock, RC) intPtr_phobic = tiny(1.) ! avoid division by zero intPtr_philic = tiny(1.) ! avoid division by zero if ( MAPL_AM_I_ROOT() ) then + !$omp critical (CA_1) print *, '<> CA '//cdow//' tracer being set to zero on ', nymd, nhms + !$omp end critical (CA_1) end if end if @@ -847,36 +858,43 @@ subroutine Run1 (GC, import, export, clock, RC) ! Read any pointwise emissions, if requested ! ------------------------------------------ + thread = 0 + !$ thread = omp_get_thread_num() + workspace => self%workspaces(thread) if(self%doing_point_emissions) then call StrTemplate(fname, self%point_emissions_srcfilen, xid='unknown', & nymd=nymd, nhms=120000 ) inquire( file=fname, exist=fileExists) if (fileExists) then - call ReadPointEmissions (nymd, fname, self%nPts, self%pLat, self%pLon, & - self%pBase, self%pTop, self%pEmis, self%pStart, & - self%pEnd, label='source', __RC__) + call ReadPointEmissions (nymd, fname, workspace%nPts, workspace%pLat, workspace%pLon, & + workspace%pBase, workspace%pTop, workspace%pEmis, workspace%pStart, & + workspace%pEnd, label='source', __RC__) else if (.not. fileExists) then + !$omp critical (CA_2) if(mapl_am_i_root()) print*,'GOCART2G ',trim(comp_name),': ',trim(fname),' not found; proceeding.' - self%nPts = -1 ! set this back to -1 so the "if (self%nPts > 0)" conditional is not exercised. + !$omp end critical (CA_2) + workspace%nPts = -1 ! set this back to -1 so the "if (workspace%nPts > 0)" conditional is not exercised. end if end if ! Get indices for point emissions ! ------------------------------- - if (self%nPts > 0) then - allocate(iPoint(self%nPts), jPoint(self%nPts), __STAT__) - call MAPL_GetHorzIJIndex(self%nPts, iPoint, jPoint, & + if (workspace%nPts > 0) then + allocate(iPoint(workspace%nPts), jPoint(workspace%nPts), __STAT__) + call MAPL_GetHorzIJIndex(workspace%nPts, iPoint, jPoint, & grid = grid, & - lon = self%pLon/real(MAPL_RADIANS_TO_DEGREES), & - lat = self%pLat/real(MAPL_RADIANS_TO_DEGREES), & + lon = workspace%pLon/real(MAPL_RADIANS_TO_DEGREES), & + lat = workspace%pLat/real(MAPL_RADIANS_TO_DEGREES), & rc = status) if ( status /= 0 ) then + !$omp critical (CA_3) if (mapl_am_i_root()) print*, trim(Iam), ' - cannot get indices for point emissions' + !$omp end critical (CA_3) VERIFY_(status) end if - call updatePointwiseEmissions (self%km, self%pBase, self%pTop, self%pEmis, self%nPts, & - self%pStart, self%pEnd, zle, & + call updatePointwiseEmissions (self%km, workspace%pBase, workspace%pTop, workspace%pEmis, workspace%nPts, & + workspace%pStart, workspace%pEnd, zle, & area, iPoint, jPoint, nhms, emissions_point, __RC__) intPtr_phobic = intPtr_phobic + self%fHydrophobic * self%cdt * MAPL_GRAV / delp * emissions_point @@ -1351,7 +1369,9 @@ subroutine monochromatic_aerosol_optics(state, rc) else if ((wavelength .ge. 8.68e-7) .and. (wavelength .le. 8.71e-7)) then mieTable_index = 4. else + !$omp critical (CA_4) print*,trim(Iam),' : wavelengths of ',wavelength,' is an invalid value.' + !$omp end critical (CA_4) return end if diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 index 83d17cff..1cccea93 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 @@ -18,6 +18,7 @@ module DU2G_GridCompMod use GOCART2G_Process ! GOCART2G process library use GA_EnvironmentMod use MAPL_StringTemplate, only: StrTemplate + !$ use omp_lib implicit none private @@ -39,6 +40,17 @@ module DU2G_GridCompMod integer, parameter :: NHRES = 6 ! !Dust state + type :: ThreadWorkspace + integer :: day_save = -1 + integer :: nPts = -1 + integer, allocatable, dimension(:) :: pstart, pend + real, allocatable, dimension(:) :: pLat, & + pLon, & + pBase, & + pTop, & + pEmis + end type ThreadWorkspace + type, extends(GA_Environment) :: DU2G_GridComp real, allocatable :: rlow(:) ! particle effective radius lower bound [um] real, allocatable :: rup(:) ! particle effective radius upper bound [um] @@ -59,13 +71,7 @@ module DU2G_GridCompMod ! !Workspae for point emissions logical :: doing_point_emissions = .false. character(len=255) :: point_emissions_srcfilen ! filename for pointwise emissions - integer :: nPts = -1 - integer, allocatable, dimension(:) :: pstart, pend - real, allocatable, dimension(:) :: pLat, & - pLon, & - pBase, & - pTop, & - pEmis + type(ThreadWorkspace), allocatable :: workspaces(:) end type DU2G_GridComp type wrap_ @@ -111,6 +117,7 @@ subroutine SetServices (GC, RC) integer :: i real :: DEFVAL logical :: data_driven = .true. + integer :: num_threads __Iam__('SetServices') @@ -127,6 +134,10 @@ subroutine SetServices (GC, RC) allocate (self, __STAT__) wrap%ptr => self + num_threads = 1 + !$ num_threads = omp_get_max_threads() + allocate(self%workspaces(0:num_threads-1), __STAT__) + ! Load resource file ! ------------------- cfg = ESMF_ConfigCreate (__RC__) @@ -702,6 +713,8 @@ subroutine Run1 (GC, import, export, clock, RC) real, dimension(:,:), allocatable :: R_ real, dimension(:,:), allocatable :: H_w_ real, dimension(:,:), allocatable :: f_erod_ + type(ThreadWorkspace), pointer :: workspace + integer :: thread, jstart, jend #include "DU2G_DeclarePointer___.h" @@ -813,46 +826,53 @@ subroutine Run1 (GC, import, export, clock, RC) ! Read point emissions file once per day ! -------------------------------------- + thread = 0 + !$ thread = omp_get_thread_num() + workspace => self%workspaces(thread) if (self%doing_point_emissions) then - if (self%day_save /= idd) then - self%day_save = idd + if (workspace%day_save /= idd) then + workspace%day_save = idd call StrTemplate(fname, self%point_emissions_srcfilen, xid='unknown', & nymd=nymd, nhms=120000 ) inquire( file=fname, exist=fileExists) if (fileExists) then - call ReadPointEmissions (nymd, fname, self%nPts, self%pLat, self%pLon, & - self%pBase, self%pTop, self%pEmis, self%pStart, & - self%pEnd, label='source', __RC__) + call ReadPointEmissions (nymd, fname, workspace%nPts, workspace%pLat, workspace%pLon, & + workspace%pBase, workspace%pTop, workspace%pEmis, workspace%pStart, & + workspace%pEnd, label='source', __RC__) else if (.not. fileExists) then + !$omp critical (DU2G_1) if(mapl_am_i_root()) print*,'GOCART2G ',trim(comp_name),': ',trim(fname),' not found; proceeding.' - self%nPts = -1 ! set this back to -1 so the "if (self%nPts > 0)" conditional is not exercised. + !$omp end critical (DU2G_1) + workspace%nPts = -1 ! set this back to -1 so the "if (workspace%nPts > 0)" conditional is not exercised. end if end if end if ! Get indices for point emissions ! ------------------------------- - if (self%nPts > 0) then - allocate(iPoint(self%nPts), jPoint(self%nPts), __STAT__) - call MAPL_GetHorzIJIndex(self%nPts, iPoint, jPoint, & + if (workspace%nPts > 0) then + allocate(iPoint(workspace%nPts), jPoint(workspace%nPts), __STAT__) + call MAPL_GetHorzIJIndex(workspace%nPts, iPoint, jPoint, & grid = grid, & - lon = self%pLon/real(MAPL_RADIANS_TO_DEGREES), & - lat = self%pLat/real(MAPL_RADIANS_TO_DEGREES), & + lon = workspace%pLon/real(MAPL_RADIANS_TO_DEGREES), & + lat = workspace%pLat/real(MAPL_RADIANS_TO_DEGREES), & rc = status) if ( status /= 0 ) then + !$omp critical (DU2G_2) if (mapl_am_i_root()) print*, trim(Iam), ' - cannot get indices for point emissions' + !$omp end critical (DU2G_2) VERIFY_(status) end if - call updatePointwiseEmissions (self%km, self%pBase, self%pTop, self%pEmis, self%nPts, & - self%pStart, self%pEnd, zle, & + call updatePointwiseEmissions (self%km, workspace%pBase, workspace%pTop, workspace%pEmis, workspace%nPts, & + workspace%pStart, workspace%pEnd, zle, & area, iPoint, jPoint, nhms, emissions_point, __RC__) end if ! Update aerosol state ! -------------------- call UpdateAerosolState (emissions, emissions_surface, emissions_point, & - self%sfrac, self%nPts, self%km, self%CDT, MAPL_GRAV, & + self%sfrac, workspace%nPts, self%km, self%CDT, MAPL_GRAV, & self%nbins, delp, DU, __RC__) if (associated(DUEM)) then @@ -862,7 +882,7 @@ subroutine Run1 (GC, import, export, clock, RC) ! Clean up ! -------- deallocate(emissions, emissions_surface, emissions_point, __STAT__) - if (self%nPts > 0) then + if (workspace%nPts > 0) then deallocate(iPoint, jPoint, __STAT__) end if @@ -1257,7 +1277,9 @@ subroutine monochromatic_aerosol_optics(state, rc) else if ((wavelength .ge. 8.68e-7) .and. (wavelength .le. 8.71e-7)) then mieTable_index = 4. else + !$omp critical (DU2G_3) print*,trim(Iam),' : wavelength of ',wavelength,' is an invalid value.' + !$omp end critical (DU2G_3) return end if diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 index d9901b66..3722aac8 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 @@ -50,7 +50,7 @@ module NI2G_GridCompMod type, extends(GA_Environment) :: NI2G_GridComp logical :: first logical :: recycle_HNO3 = .false. - real, allocatable :: xhno3(:,:,:) ! buffer for NITRATE_HNO3 [kg/(m^2 sec)] + !real, allocatable :: xhno3(:,:,:) ! buffer for NITRATE_HNO3 [kg/(m^2 sec)]; moved to ESMF internal state real, allocatable :: rmedDU(:), rmedSS(:) ! DU and SS radius real, allocatable :: fnumDU(:), fnumSS(:) ! DU and SS particles per kg mass end type NI2G_GridComp @@ -310,6 +310,8 @@ subroutine Initialize (GC, IMPORT, EXPORT, CLOCK, RC) real, dimension(4) :: Vect_Hcts ! real, allocatable, dimension(:) :: rmedDU, rmedSS, fnumDU, fnumSS integer :: itemCount + integer :: num_threads +! real, pointer, dimension(:,:,:) :: xhno3 __Iam__('Initialize') @@ -333,11 +335,12 @@ subroutine Initialize (GC, IMPORT, EXPORT, CLOCK, RC) ! Get dimensions ! --------------- - call MAPL_GridGet (grid, globalCellCountPerDim=dims, __RC__ ) + !call MAPL_GridGet (grid, globalCellCountPerDim=dims, __RC__ ) + call MAPL_GridGet (grid, localCellCountPerDim=dims, __RC__ ) km = dims(3) self%km = km - allocate(self%xhno3(dims(1),dims(2),dims(3)), __STAT__) + !allocate(self%xhno3(dims(1),dims(2),dims(3)), __STAT__) ! Get DTs ! ------- @@ -365,6 +368,9 @@ subroutine Initialize (GC, IMPORT, EXPORT, CLOCK, RC) ! ----------------------------------- call MAPL_Get ( mapl, INTERNAL_ESMF_STATE = internal, __RC__) +! xhno3 is moved to ESMF internal state +! call MAPL_GetPointer(internal, NAME='XHNO3', ptr=xhno3, __RC__) + ! Is NI data driven? ! ------------------ call determine_data_driven (COMP_NAME, data_driven, __RC__) @@ -785,13 +791,13 @@ subroutine Run2 (GC, import, export, clock, RC) ! Save local copy of HNO3 for first pass through run method regardless if (self%first) then - self%xhno3 = MAPL_UNDEF + xhno3 = MAPL_UNDEF self%first = .false. end if ! Recycle HNO3 every 3 hours if (alarm_is_ringing) then - self%xhno3 = NITRATE_HNO3 + xhno3 = NITRATE_HNO3 call ESMF_AlarmRingerOff(alarm, __RC__) end if @@ -801,10 +807,10 @@ subroutine Run2 (GC, import, export, clock, RC) call NIthermo (self%km, self%klid, self%cdt, MAPL_GRAV, delp, airdens, & t, rh2, fMassHNO3, MAPL_AIRMW, SO4, NH3, NO3an1, NH4a, & - self%xhno3, NIPNO3AQ, NIPNH4AQ, NIPNH3AQ, __RC__) + xhno3, NIPNO3AQ, NIPNH4AQ, NIPNH3AQ, __RC__) - call NIheterogenousChem (NIHT, self%xhno3, MAPL_UNDEF, MAPL_AVOGAD, MAPL_AIRMW, & + call NIheterogenousChem (NIHT, xhno3, MAPL_UNDEF, MAPL_AVOGAD, MAPL_AIRMW, & MAPL_PI, MAPL_RUNIV/1000., airdens, t, rh2, delp, DU, & SS, self%rmedDU*1.e-6, self%rmedSS*1.e-6, & self%fnumDU, self%fnumSS, 5, 5, self%km, self%klid, & diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc index 3cd5d6ff..69642cc9 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc @@ -102,11 +102,12 @@ category: INTERNAL #---------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME #---------------------------------------------------------------------------------------- - NH3 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Ammonia (NH3, gas phase) - NH4a |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Ammonium ion (NH4+, aerosol phase) - NO3an1 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Nitrate size bin 001 - NO3an2 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Nitrate size bin 002 - NO3an3 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Nitrate size bin 003 + NH3 |kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Ammonia (NH3, gas phase) + NH4a |kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Ammonium ion (NH4+, aerosol phase) + NO3an1 |kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Nitrate size bin 001 + NO3an2 |kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Nitrate size bin 002 + NO3an3 |kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Nitrate size bin 003 + XHNO3 |kg m-2 s-1| xyz | C | MAPL_RestartOptional | F | | buffer for NITRATE_HNO3 #******************************************************** diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 index badbff97..a6bf4b9b 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 @@ -49,7 +49,7 @@ module SS2G_GridCompMod ! 0 - none; 1 - Jaegle et al. 2011; 2 - GEOS5 logical :: hoppelFlag ! Apply the Hoppel correction to emissions (Fan and Toon, 2011) logical :: weibullFlag ! Apply the Weibull distribution to wind speed for emissions (Fan and Toon, 2011) - real, allocatable :: deep_lakes_mask(:,:) + !real, allocatable :: deep_lakes_mask(:,:) integer :: emission_scheme real :: emission_scale ! global scaling factor real :: emission_scale_res(NHRES) ! global scaling factor @@ -328,6 +328,7 @@ subroutine Initialize (GC, IMPORT, EXPORT, CLOCK, RC) integer :: NUM_BANDS logical :: bands_are_present real, pointer, dimension(:,:,:) :: ple + real, pointer, dimension(:,:) :: deep_lakes_mask __Iam__('Initialize') @@ -538,8 +539,11 @@ subroutine Initialize (GC, IMPORT, EXPORT, CLOCK, RC) ! Mask to prevent emissions from the Great Lakes and the Caspian Sea ! ------------------------------------------------------------------ - allocate(self%deep_lakes_mask(ubound(lons, 1),ubound(lons, 2)), __STAT__) - call deepLakesMask (lons, lats, real(MAPL_RADIANS_TO_DEGREES), self%deep_lakes_mask, __RC__) + !allocate(self%deep_lakes_mask(ubound(lons, 1),ubound(lons, 2)), __STAT__) + !call deepLakesMask (lons, lats, real(MAPL_RADIANS_TO_DEGREES), self%deep_lakes_mask, __RC__) + call MAPL_GetPointer (internal, NAME='DEEP_LAKES_MASK', ptr=deep_lakes_mask, __RC__) + call deepLakesMask (lons, lats, real(MAPL_RADIANS_TO_DEGREES), deep_lakes_mask, __RC__) + RETURN_(ESMF_SUCCESS) @@ -673,7 +677,7 @@ subroutine Run1 (GC, import, export, clock, RC) ! ----------------------------------- ! Grid box efficiency to emission (fraction of sea water) allocate(fgridefficiency, mold=frocean, __STAT__ ) - fgridefficiency = min(max(0.,(frocean-fraci)*self%deep_lakes_mask),1.) + fgridefficiency = min(max(0.,(frocean-fraci)*deep_lakes_mask),1.) ! Apply SST correction following Jaegle et al. 2011 if needed ! ------------------------------------------------------------ diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc index 19715f16..0dcb8c35 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc @@ -77,6 +77,7 @@ category: INTERNAL NAME | UNITS | DIMS | VLOC | UNGRIDDED | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME #---------------------------------------------------------------------------------------- SS |kg kg-1| xyz | C | self%nbins | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sea Salt Mixing Ratio (bin %d) + DEEP_LAKES_MASK | 1 | xy | N | | | F | | Deep Lakes Mask #******************************************************** diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 index 546fde66..4c7fa7ff 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 @@ -52,10 +52,28 @@ module SU2G_GridCompMod !EOP !=========================================================================== ! !Sulfer state + type :: ThreadWorkspace + integer :: nVolc = 0 + real, allocatable, dimension(:) :: vLat, & + vLon, & + vSO2, & + vElev, & + vCloud + integer, allocatable, dimension(:) :: vStart, & + vEnd + integer :: nymd_last = -1 ! Previous nymd. Updated daily + integer :: nPts = -1 + integer, allocatable, dimension(:) :: pstart, pend + real, allocatable, dimension(:) :: pLat, & + pLon, & + pBase, & + pTop, & + pEmis + end type ThreadWorkspace + type, extends(GA_Environment) :: SU2G_GridComp integer :: myDOW = -1 ! my Day of the week: Sun=1, Mon=2,...,Sat=7 logical :: diurnal_bb ! diurnal biomass burning - integer :: nymd_last = -1 ! Previous nymd. Updated daily integer :: nymd_oxidants = -1 ! Update the oxidant files? real :: eAircraftFuel ! Aircraft emission factor: go from kg fuel to kg SO2 real :: aviation_layers(4) ! heights of the LTO, CDS and CRS layers @@ -63,28 +81,14 @@ module SU2G_GridCompMod logical :: recycle_H2O2 = .false. logical :: firstRun = .true. real, allocatable :: sigma(:) ! Sigma of lognormal number distribution - real, pointer :: h2o2_init(:,:,:) + !real, pointer :: h2o2_init(:,:,:) ! Special handling for volcanic emissions character(len=255) :: volcano_srcfilen - integer :: nVolc = 0 - real, allocatable, dimension(:) :: vLat, & - vLon, & - vSO2, & - vElev, & - vCloud - integer, allocatable, dimension(:) :: vStart, & - vEnd ! !Workspae for point emissions logical :: doing_point_emissions = .false. character(len=255) :: point_emissions_srcfilen ! filename for pointwise emissions - integer :: nPts = -1 - integer, allocatable, dimension(:) :: pstart, pend - real, allocatable, dimension(:) :: pLat, & - pLon, & - pBase, & - pTop, & - pEmis + type(ThreadWorkspace), allocatable :: workspaces(:) end type SU2G_GridComp type wrap_ @@ -130,6 +134,7 @@ subroutine SetServices ( GC, RC ) integer :: i real :: DEFVAL logical :: data_driven=.true. + integer :: num_threads __Iam__('SetServices') @@ -146,6 +151,10 @@ subroutine SetServices ( GC, RC ) allocate (self, __STAT__) wrap%ptr => self + num_threads = 1 + !$ num_threads = omp_get_max_threads() + allocate(self%workspaces(0:num_threads-1), __STAT__) + ! Load resource file ! ------------------- cfg = ESMF_ConfigCreate (__RC__) @@ -465,7 +474,7 @@ subroutine Initialize (GC, IMPORT, EXPORT, CLOCK, RC) LONS = LONS, & LATS = LATS, __RC__ ) - allocate(self%h2o2_init(size(lats,1),size(lats,2),self%km), __STAT__) + !allocate(self%h2o2_init(size(lats,1),size(lats,2),self%km), __STAT__) ! Is SU data driven? ! ------------------ @@ -756,6 +765,8 @@ subroutine Run1 (GC, import, export, clock, RC) logical :: fileExists real, pointer, dimension(:,:,:) :: dummyMSA => null() ! This is so the model can run without MSA enabled + type(ThreadWorkspace), pointer :: workspace + integer :: thread #include "SU2G_DeclarePointer___.h" @@ -840,41 +851,46 @@ subroutine Run1 (GC, import, export, clock, RC) ! Update emissions/production if necessary (daily) ! ----------------------------------------------- - if(self%nymd_last /= nymd) then - self%nymd_last = nymd + thread = 0 + !$ thread = omp_get_thread_num() + workspace => self%workspaces(thread) + + if(workspace%nymd_last /= nymd) then + workspace%nymd_last = nymd ! Get pointwise SO2 and altitude of volcanoes from a daily file data base if(index(self%volcano_srcfilen,'volcanic_') /= 0) then call StrTemplate(fname, self%volcano_srcfilen, xid='unknown', & nymd=nymd, nhms=120000 ) - call ReadPointEmissions (nymd, fname, self%nVolc, self%vLat, self%vLon, & - self%vElev, self%vCloud, self%vSO2, self%vStart, & - self%vEnd, label='volcano', __RC__) - self%vSO2 = self%vSO2 * fMassSO2 / fMassSulfur + call ReadPointEmissions (nymd, fname, workspace%nVolc, workspace%vLat, workspace%vLon, & + workspace%vElev, workspace%vCloud, workspace%vSO2, workspace%vStart, & + workspace%vEnd, label='volcano', __RC__) + workspace%vSO2 = workspace%vSO2 * fMassSO2 / fMassSulfur ! Special possible case - if(self%volcano_srcfilen(1:9) == '/dev/null') self%nVolc = 0 + if(self%volcano_srcfilen(1:9) == '/dev/null') workspace%nVolc = 0 end if end if + print *, __FILE__, __LINE__, workspace%nVolc, shape(workspace%vLon), shape(workspace%vLat) ! Apply volcanic emissions ! ------------------------ - if (self%nVolc > 0) then + if (workspace%nVolc > 0) then if (associated(SO2EMVE)) SO2EMVE=0.0 if (associated(SO2EMVN)) SO2EMVN=0.0 - allocate(iPointVolc(self%nVolc), jPointVolc(self%nVolc), __STAT__) - call MAPL_GetHorzIJIndex(self%nVolc, iPointVolc, jPointVolc, & + allocate(iPointVolc(workspace%nVolc), jPointVolc(workspace%nVolc), __STAT__) + call MAPL_GetHorzIJIndex(workspace%nVolc, iPointVolc, jPointVolc, & grid = grid, & - lon = self%vLon/real(MAPL_RADIANS_TO_DEGREES), & - lat = self%vLat/real(MAPL_RADIANS_TO_DEGREES), & + lon = workspace%vLon/real(MAPL_RADIANS_TO_DEGREES), & + lat = workspace%vLat/real(MAPL_RADIANS_TO_DEGREES), & rc = status) if ( status /= 0 ) then if (mapl_am_i_root()) print*, trim(Iam), ' - cannot get indices for point emissions' VERIFY_(status) end if - call SUvolcanicEmissions (self%nVolc, self%vStart, self%vEnd, self%vSO2, self%vElev, & - self%vCloud, iPointVolc, jPointVolc, nhms, SO2EMVN, SO2EMVE, SO2, nSO2, SUEM, & - self%km, self%cdt, MAPL_GRAV, zle, delp, area, self%vLat, self%vLon, __RC__) + call SUvolcanicEmissions (workspace%nVolc, workspace%vStart, workspace%vEnd, workspace%vSO2, workspace%vElev, & + workspace%vCloud, iPointVolc, jPointVolc, nhms, SO2EMVN, SO2EMVE, SO2, nSO2, SUEM, & + self%km, self%cdt, MAPL_GRAV, zle, delp, area, workspace%vLat, workspace%vLon, __RC__) end if ! Apply diurnal cycle if so desired @@ -897,7 +913,7 @@ subroutine Run1 (GC, import, export, clock, RC) aircraft_fuel_src, & SO2, SO4, & lwi, u10m, v10m, zle, zpbl, & - t, airdens, delp, self%nVolc, & + t, airdens, delp, workspace%nVolc, & SUEM, SO4EMAN, SO2EMAN, SO2EMBB, & self%aviation_layers, & aviation_lto_src, & @@ -920,33 +936,34 @@ subroutine Run1 (GC, import, export, clock, RC) nymd=nymd, nhms=120000 ) inquire( file=fname, exist=fileExists) if (fileExists) then - call ReadPointEmissions (nymd, fname, self%nPts, self%pLat, self%pLon, & - self%pBase, self%pTop, self%pEmis, self%pStart, & - self%pEnd, label='source', __RC__) + call ReadPointEmissions (nymd, fname, workspace%nPts, workspace%pLat, workspace%pLon, & + workspace%pBase, workspace%pTop, workspace%pEmis, workspace%pStart, & + workspace%pEnd, label='source', __RC__) else if (.not. fileExists) then if(mapl_am_i_root()) print*,'GOCART2G ',trim(comp_name),': ',trim(fname),' not found; proceeding.' - self%nPts = -1 ! set this back to -1 so the "if (self%nPts > 0)" conditional is not exercised. + workspace%nPts = -1 ! set this back to -1 so the "if (workspace%nPts > 0)" conditional is not exercised. end if endif + print *, __FILE__, __LINE__, workspace%nPts, shape(workspace%pLon), shape(workspace%pLat) ! Get indices for point emissions ! ------------------------------- - if (self%nPts > 0) then + if (workspace%nPts > 0) then allocate(emissions_point, mold=delp, __STAT__) emissions_point = 0.0 - allocate(iPoint(self%nPts), jPoint(self%nPts), __STAT__) - call MAPL_GetHorzIJIndex(self%nPts, iPoint, jPoint, & + allocate(iPoint(workspace%nPts), jPoint(workspace%nPts), __STAT__) + call MAPL_GetHorzIJIndex(workspace%nPts, iPoint, jPoint, & grid = grid, & - lon = self%pLon/real(MAPL_RADIANS_TO_DEGREES), & - lat = self%pLat/real(MAPL_RADIANS_TO_DEGREES), & + lon = workspace%pLon/real(MAPL_RADIANS_TO_DEGREES), & + lat = workspace%pLat/real(MAPL_RADIANS_TO_DEGREES), & rc = status) if ( status /= 0 ) then if (mapl_am_i_root()) print*, trim(Iam), ' - cannot get indices for point emissions' VERIFY_(status) end if - call updatePointwiseEmissions (self%km, self%pBase, self%pTop, self%pEmis, self%nPts, & - self%pStart, self%pEnd, zle, & + call updatePointwiseEmissions (self%km, workspace%pBase, workspace%pTop, workspace%pEmis, workspace%nPts, & + workspace%pStart, workspace%pEnd, zle, & area, iPoint, jPoint, nhms, emissions_point, __RC__) SO4 = SO4 + self%cdt * MAPL_GRAV / delp * emissions_point @@ -1055,11 +1072,11 @@ subroutine Run2 (GC, import, export, clock, RC) if (self%firstRun) then xh2o2 = MAPL_UNDEF - self%h2o2_init = MAPL_UNDEF + h2o2_init = MAPL_UNDEF self%firstRun = .false. end if - xh2o2 = self%h2o2_init + xh2o2 = h2o2_init call SulfateUpdateOxidants (nymd, nhms, LONS, LATS, airdens, self%km, self%cdt, & self%nymd_oxidants, MAPL_UNDEF, real(MAPL_RADIANS_TO_DEGREES), & @@ -1091,7 +1108,7 @@ subroutine Run2 (GC, import, export, clock, RC) nymd, nhms, lons, lats, & dms, so2, so4, dummyMSA, & nDMS, nSO2, nSO4, nMSA, & - xoh, xno3, xh2o2, self%h2o2_init, & + xoh, xno3, xh2o2, h2o2_init, & delp, t, fcld, airdens, zle, & ustar, sh, lwi, zpbl, z0h, & SUDP, SUPSO2, SUPMSA, & @@ -1102,7 +1119,7 @@ subroutine Run2 (GC, import, export, clock, RC) KIN = .true. call SU_Wet_Removal ( self%km, self%nbins, self%klid, self%cdt, kin, MAPL_GRAV, MAPL_AIRMW, & delp, fMassSO4, fMassSO2, & - self%h2o2_init, ple, airdens, cn_prcp, ncn_prcp, pfl_lsan, pfi_lsan, t, & + h2o2_init, ple, airdens, cn_prcp, ncn_prcp, pfl_lsan, pfi_lsan, t, & nDMS, nSO2, nSO4, nMSA, DMS, SO2, SO4, dummyMSA, & SUWT, SUPSO4, SUPSO4WT, PSO4, PSO4WET, __RC__ ) diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc index 9aa02423..510d847b 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc @@ -103,10 +103,11 @@ category: INTERNAL #---------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME #---------------------------------------------------------------------------------------- - DMS |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Dimethylsulphide - SO2 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sulphur dioxide - SO4 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sulphate aerosol - MSA |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Methanesulphonic acid + DMS |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Dimethylsulphide + SO2 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sulphur dioxide + SO4 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sulphate aerosol + MSA |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Methanesulphonic acid + H2O2_INIT |kg kg-1| xyz | C | MAPL_RestartOptional | F | | private H2O2 that is saved and used to initialize #******************************************************** From 27c5a76945d8daab5d520b7edc6a1d2590d01fd3 Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Sun, 8 May 2022 05:51:07 -0400 Subject: [PATCH 04/28] Get grid with mapl_get --- .../CA2G_GridComp/CA2G_GridCompMod.F90 | 6 ++++-- .../DU2G_GridComp/DU2G_GridCompMod.F90 | 6 ++++-- ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 | 1 - .../NI2G_GridComp/NI2G_GridCompMod.F90 | 7 ++++--- .../SS2G_GridComp/SS2G_GridCompMod.F90 | 6 ++++-- .../SU2G_GridComp/SU2G_GridCompMod.F90 | 15 +++++++++------ ESMF/Shared/Chem_AeroGeneric.F90 | 2 +- 7 files changed, 26 insertions(+), 17 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 index b18e06a0..4856ffa4 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 @@ -64,7 +64,7 @@ module CA2G_GridCompMod end type CA2G_GridComp type wrap_ - type (CA2G_GridComp), pointer :: PTR => null() + type (CA2G_GridComp), pointer :: PTR !=> null() end type wrap_ contains @@ -722,13 +722,15 @@ subroutine Run1 (GC, import, export, clock, RC) ! Get my name and set-up traceback handle ! --------------------------------------- - call ESMF_GridCompGet (GC, grid=grid, NAME=COMP_NAME, __RC__) + call ESMF_GridCompGet (GC, NAME=COMP_NAME, __RC__) Iam = trim(COMP_NAME) //'::'// Iam ! Get my internal MAPL_Generic state ! ----------------------------------- call MAPL_GetObjectFromGC (GC, mapl, __RC__) + call MAPL_Get(mapl, grid=grid, __RC__) + ! Get parameters from generic state. ! ----------------------------------- call MAPL_Get (mapl, INTERNAL_ESMF_STATE=internal, & diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 index 1cccea93..d3588188 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 @@ -75,7 +75,7 @@ module DU2G_GridCompMod end type DU2G_GridComp type wrap_ - type (DU2G_GridComp), pointer :: PTR => null() + type (DU2G_GridComp), pointer :: PTR !=> null() end type wrap_ contains @@ -725,13 +725,15 @@ subroutine Run1 (GC, import, export, clock, RC) ! Get my name and set-up traceback handle ! --------------------------------------- - call ESMF_GridCompGet (GC, grid=grid, NAME=COMP_NAME, __RC__) + call ESMF_GridCompGet (GC, NAME=COMP_NAME, __RC__) Iam = trim(COMP_NAME) //'::'// Iam ! Get my internal MAPL_Generic state ! ----------------------------------- call MAPL_GetObjectFromGC (GC, mapl, __RC__) + call MAPL_Get(mapl, grid=grid, __RC__) + ! Get parameters from generic state. ! ----------------------------------- call MAPL_Get (mapl, INTERNAL_ESMF_STATE=internal, __RC__) diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 index ab4b622e..a8343493 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 @@ -566,7 +566,6 @@ end subroutine Run1 ! !INTERFACE: subroutine run_thread (GC, import, export, clock, RC) - !$ use omp_lib ! !ARGUMENTS: type (ESMF_GridComp), intent(inout) :: GC ! Gridded component diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 index 3722aac8..9c76923a 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 @@ -56,7 +56,7 @@ module NI2G_GridCompMod end type NI2G_GridComp type wrap_ - type (NI2G_GridComp), pointer :: PTR => null() + type (NI2G_GridComp), pointer :: PTR !=> null() end type wrap_ contains @@ -310,7 +310,6 @@ subroutine Initialize (GC, IMPORT, EXPORT, CLOCK, RC) real, dimension(4) :: Vect_Hcts ! real, allocatable, dimension(:) :: rmedDU, rmedSS, fnumDU, fnumSS integer :: itemCount - integer :: num_threads ! real, pointer, dimension(:,:,:) :: xhno3 __Iam__('Initialize') @@ -662,13 +661,15 @@ subroutine Run1 (GC, import, export, clock, RC) ! Get my name and set-up traceback handle ! --------------------------------------- - call ESMF_GridCompGet (GC, grid=grid, NAME=comp_name, __RC__) + call ESMF_GridCompGet (GC, NAME=comp_name, __RC__) Iam = trim(comp_name) //'::'// Iam ! Get my internal MAPL_Generic state ! ----------------------------------- call MAPL_GetObjectFromGC (GC, mapl, __RC__) + call MAPL_Get(mapl, grid=grid, __RC__) + ! Get parameters from generic state. ! ----------------------------------- call MAPL_Get (mapl, INTERNAL_ESMF_STATE=internal, __RC__) diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 index a6bf4b9b..2ffc02ca 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 @@ -56,7 +56,7 @@ module SS2G_GridCompMod end type SS2G_GridComp type wrap_ - type (SS2G_GridComp), pointer :: PTR => null() + type (SS2G_GridComp), pointer :: PTR !=> null() end type wrap_ contains @@ -654,13 +654,15 @@ subroutine Run1 (GC, import, export, clock, RC) ! Get my name and set-up traceback handle ! --------------------------------------- - call ESMF_GridCompGet (GC, grid=grid, NAME=COMP_NAME, __RC__) + call ESMF_GridCompGet (GC, NAME=COMP_NAME, __RC__) Iam = trim(COMP_NAME) //'::'// Iam ! Get my internal MAPL_Generic state ! ----------------------------------- call MAPL_GetObjectFromGC (GC, mapl, __RC__) + call MAPL_Get(mapl, grid=grid, __RC__) + ! Get parameters from generic state. ! ----------------------------------- call MAPL_Get (mapl, INTERNAL_ESMF_STATE=internal, __RC__) diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 index 4c7fa7ff..d75c65df 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 @@ -18,6 +18,7 @@ module SU2G_GridCompMod use GOCART2G_Process ! GOCART2G process library use GA_EnvironmentMod use MAPL_StringTemplate, only: StrTemplate + !$ use omp_lib implicit none private @@ -92,7 +93,7 @@ module SU2G_GridCompMod end type SU2G_GridComp type wrap_ - type (SU2G_GridComp), pointer :: PTR => null() + type (SU2G_GridComp), pointer :: PTR !=> null() end type wrap_ contains @@ -764,7 +765,7 @@ subroutine Run1 (GC, import, export, clock, RC) character (len=ESMF_MAXSTR) :: fname ! file name for point source emissions logical :: fileExists - real, pointer, dimension(:,:,:) :: dummyMSA => null() ! This is so the model can run without MSA enabled + real, pointer, dimension(:,:,:) :: dummyMSA !=> null() ! This is so the model can run without MSA enabled type(ThreadWorkspace), pointer :: workspace integer :: thread @@ -775,15 +776,19 @@ subroutine Run1 (GC, import, export, clock, RC) !***************************************************************************** ! Begin... + nullify(dummyMSA) + ! Get my name and set-up traceback handle ! --------------------------------------- - call ESMF_GridCompGet (GC, grid=grid, NAME=COMP_NAME, __RC__) + call ESMF_GridCompGet (GC, NAME=COMP_NAME, __RC__) Iam = trim(comp_name) //'::'// Iam ! Get my internal MAPL_Generic state ! ----------------------------------- call MAPL_GetObjectFromGC (GC, mapl, __RC__) + call MAPL_Get(mapl, grid=grid, __RC__) + ! Get parameters from generic state. ! ----------------------------------- call MAPL_Get (mapl, INTERNAL_ESMF_STATE=internal, & @@ -870,7 +875,6 @@ subroutine Run1 (GC, import, export, clock, RC) if(self%volcano_srcfilen(1:9) == '/dev/null') workspace%nVolc = 0 end if end if - print *, __FILE__, __LINE__, workspace%nVolc, shape(workspace%vLon), shape(workspace%vLat) ! Apply volcanic emissions ! ------------------------ @@ -944,7 +948,6 @@ subroutine Run1 (GC, import, export, clock, RC) workspace%nPts = -1 ! set this back to -1 so the "if (workspace%nPts > 0)" conditional is not exercised. end if endif - print *, __FILE__, __LINE__, workspace%nPts, shape(workspace%pLon), shape(workspace%pLat) ! Get indices for point emissions ! ------------------------------- @@ -1013,7 +1016,7 @@ subroutine Run2 (GC, import, export, clock, RC) real, dimension(:,:,:), allocatable :: xoh, xno3, xh2o2 real, dimension(:,:), allocatable :: drydepositionf - real, pointer, dimension(:,:,:) :: dummyMSA => null() ! this is so the model can run without MSA enabled + real, pointer, dimension(:,:,:) :: dummyMSA !=> null() ! this is so the model can run without MSA enabled logical :: alarm_is_ringing #include "SU2G_DeclarePointer___.h" diff --git a/ESMF/Shared/Chem_AeroGeneric.F90 b/ESMF/Shared/Chem_AeroGeneric.F90 index 9bb50624..9f2ca30b 100644 --- a/ESMF/Shared/Chem_AeroGeneric.F90 +++ b/ESMF/Shared/Chem_AeroGeneric.F90 @@ -95,7 +95,7 @@ end subroutine add_aero !===================================================================================== - subroutine determine_data_driven(COMP_NAME, data_driven, RC) + recursive subroutine determine_data_driven(COMP_NAME, data_driven, RC) !ARGUMENTS: integer, optional, intent( out) :: RC ! Error code: From 204d6b47dade0522157933f20762d7f60ba490cd Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Tue, 7 Jun 2022 13:18:01 -0400 Subject: [PATCH 05/28] Removed => Null() from declaration in MAPL_GetHorzIJIndex to avoid race condition when using OpenMP --- ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 | 2 -- ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 | 2 -- ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 | 4 ---- 3 files changed, 8 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 index 1bbe3c67..5d5c465f 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 @@ -858,13 +858,11 @@ subroutine Run1 (GC, import, export, clock, RC) ! ------------------------------- if (workspace%nPts > 0) then allocate(iPoint(workspace%nPts), jPoint(workspace%nPts), __STAT__) - !$omp critical (MAPL_GettHorz1) call MAPL_GetHorzIJIndex(workspace%nPts, iPoint, jPoint, & grid = grid, & lon = workspace%pLon/real(MAPL_RADIANS_TO_DEGREES), & lat = workspace%pLat/real(MAPL_RADIANS_TO_DEGREES), & rc = status) - !$omp end critical (MAPL_GettHorz1) if ( status /= 0 ) then !$omp critical (CA_3) if (mapl_am_i_root()) print*, trim(Iam), ' - cannot get indices for point emissions' diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 index 11538057..9703706a 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 @@ -829,13 +829,11 @@ subroutine Run1 (GC, import, export, clock, RC) ! ------------------------------- if (workspace%nPts > 0) then allocate(iPoint(workspace%nPts), jPoint(workspace%nPts), __STAT__) - !$omp critical (MAPL_GettHorz1) call MAPL_GetHorzIJIndex(workspace%nPts, iPoint, jPoint, & grid = grid, & lon = workspace%pLon/real(MAPL_RADIANS_TO_DEGREES), & lat = workspace%pLat/real(MAPL_RADIANS_TO_DEGREES), & rc = status) - !$omp end critical (MAPL_GettHorz1) if ( status /= 0 ) then !$omp critical (DU2G_2) if (mapl_am_i_root()) print*, trim(Iam), ' - cannot get indices for point emissions' diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 index e185fcaa..98e77260 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 @@ -858,13 +858,11 @@ subroutine Run1 (GC, import, export, clock, RC) if (associated(SO2EMVE)) SO2EMVE=0.0 if (associated(SO2EMVN)) SO2EMVN=0.0 allocate(iPointVolc(workspace%nVolc), jPointVolc(workspace%nVolc), __STAT__) - !$omp critical (MAPL_GettHorz1) call MAPL_GetHorzIJIndex(workspace%nVolc, iPointVolc, jPointVolc, & grid = grid, & lon = workspace%vLon/real(MAPL_RADIANS_TO_DEGREES), & lat = workspace%vLat/real(MAPL_RADIANS_TO_DEGREES), & rc = status) - !$omp end critical (MAPL_GettHorz1) if ( status /= 0 ) then if (mapl_am_i_root()) print*, trim(Iam), ' - cannot get indices for point emissions' VERIFY_(status) @@ -933,13 +931,11 @@ subroutine Run1 (GC, import, export, clock, RC) allocate(emissions_point, mold=delp, __STAT__) emissions_point = 0.0 allocate(iPoint(workspace%nPts), jPoint(workspace%nPts), __STAT__) - !$omp critical (MAPL_GettHorz2) call MAPL_GetHorzIJIndex(workspace%nPts, iPoint, jPoint, & grid = grid, & lon = workspace%pLon/real(MAPL_RADIANS_TO_DEGREES), & lat = workspace%pLat/real(MAPL_RADIANS_TO_DEGREES), & rc = status) - !$omp end critical (MAPL_GettHorz2) if ( status /= 0 ) then if (mapl_am_i_root()) print*, trim(Iam), ' - cannot get indices for point emissions' VERIFY_(status) From 162858a7ab47ceaffe8e29679f8dd4f3ce7f5e71 Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Thu, 1 Sep 2022 22:53:12 -0400 Subject: [PATCH 06/28] Added accessor to set use_threads --- .../GOCART2G_GridCompMod.F90 | 170 ++---------------- 1 file changed, 11 insertions(+), 159 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 index c93d4df8..e3133f03 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 @@ -112,6 +112,7 @@ subroutine SetServices (GC, RC) integer :: n_wavelengths_profile, n_wavelengths_vertint, n_wavelengths_diagmie integer, allocatable, dimension(:) :: wavelengths_diagmie + type (MAPL_MetaComp), pointer :: MAPL __Iam__('SetServices') @@ -161,6 +162,12 @@ subroutine SetServices (GC, RC) call MAPL_ConfigSetAttribute (cf, wavelengths_diagmie, label='aerosol_monochromatic_optics_wavelength_in_nm_from_LUT:', __RC__) call ESMF_ConfigGetAttribute (myCF, self%use_threads, label='use_threads:', default=.FALSE., __RC__) +! Get my internal MAPL_Generic state +! ----------------------------------- + call MAPL_GetObjectFromGC (GC, MAPL, __RC__) +! set use_threads + call MAPL%set_use_threads(self%use_threads) + ! Get instances to determine what children will be born ! ----------------------------------------------------- call getInstances_('DU', myCF, species=self%DU, __RC__) @@ -482,80 +489,6 @@ end subroutine add_aero_states_ end subroutine Initialize - recursive subroutine Run1(GC, import, export, clock, RC) - !$ use omp_lib - type (ESMF_GridComp), intent(inout) :: GC ! Gridded component - type (ESMF_State), intent(inout) :: import ! Import state - type (ESMF_State), intent(inout) :: export ! Export state - type (ESMF_Clock), intent(inout) :: clock ! The clock - integer, optional, intent( out) :: RC ! Error code: - - type (MAPL_MetaComp), pointer :: MAPL - type(GOCART_State), pointer :: self - type(wrap_) :: wrap - integer :: thread - type(ESMF_State) :: subimport - type(ESMF_State) :: subexport - integer :: status - integer, allocatable :: statuses(:) - integer :: num_threads - character(len=ESMF_MAXSTR) :: Iam = "Run1" - type(ESMF_VM) :: vm - type(ESMF_GridComp) :: thread_gc - integer :: i, me - - !call start_global_time_profiler('run1()') - call ESMF_UserCompGetInternalState (GC, 'GOCART_State', wrap, status) - VERIFY_(status) - self => wrap%ptr - - call ESMF_GridCompGet (GC, vm=vm, __RC__) - call ESMF_VMGet(vm, localPet=me, __RC__) - - if(self%use_threads) then - call MAPL_GetObjectFromGC (GC, MAPL, __RC__) - if(MAPL%is_threading_active()) then - call run_thread(GC, import, export, clock, __RC__) - else - !call start_global_time_profiler('activate_threads') - num_threads = 1 - !$ num_threads = omp_get_max_threads() - call MAPL%activate_threading(num_threads, __RC__) - !call stop_global_time_profiler('activate_threads') - !call start_global_time_profiler('parallel') - - allocate(statuses(num_threads), __STAT__) - statuses=0 - !$omp parallel default(none), & - !$omp& private(thread, subimport, subexport, thread_gc), & - !$omp& shared(gc, statuses, clock, MAPL) - - thread = 0 - !$ thread = omp_get_thread_num() - - subimport = MAPL%get_import_state() - subexport = MAPL%get_export_state() - thread_gc = MAPL%get_gridcomp() - - call run_thread(thread_gc, subimport, subexport, clock, rc=statuses(thread+1)) - !$omp end parallel - !call stop_global_time_profiler('parallel') - - if (any(statuses /= ESMF_SUCCESS)) then - _FAIL('some thread failed') - end if - deallocate(statuses, __STAT__) - !call start_global_time_profiler('deactivate_threads') - call MAPL%deactivate_threading(__RC__) - !call stop_global_time_profiler('deactivate_threads') - end if - else - call run_thread(GC, import, export, clock, __RC__) - end if - !call stop_global_time_profiler('run1()') - RETURN_(ESMF_SUCCESS) - end subroutine Run1 - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !BOP ! !IROUTINE: RUN -- Run method for GOCART2G @@ -563,7 +496,7 @@ end subroutine Run1 ! !INTERFACE: - subroutine run_thread (GC, import, export, clock, RC) + subroutine Run1 (GC, import, export, clock, RC) ! !ARGUMENTS: type (ESMF_GridComp), intent(inout) :: GC ! Gridded component @@ -615,88 +548,7 @@ subroutine run_thread (GC, import, export, clock, RC) RETURN_(ESMF_SUCCESS) - end subroutine run_thread - -!============================================================================ -!BOP -! !IROUTINE: RUN2 -- Run2 method for GOCART2G component - -! !INTERFACE: - - recursive subroutine Run2(GC, import, export, clock, RC) - !$ use omp_lib - type (ESMF_GridComp), intent(inout) :: GC ! Gridded component - type (ESMF_State), intent(inout) :: import ! Import state - type (ESMF_State), intent(inout) :: export ! Export state - type (ESMF_Clock), intent(inout) :: clock ! The clock - integer, optional, intent( out) :: RC ! Error code: - - type (MAPL_MetaComp), pointer :: MAPL - type(GOCART_State), pointer :: self - type(wrap_) :: wrap - integer :: thread - type(ESMF_State) :: subimport - type(ESMF_State) :: subexport - integer :: status - integer, allocatable :: statuses(:) - integer :: num_threads - character(len=ESMF_MAXSTR) :: Iam = "Run2" - type(ESMF_VM) :: vm - type(ESMF_GridComp) :: thread_gc - integer :: i, me - - !call start_global_time_profiler('run2()') - call ESMF_UserCompGetInternalState (GC, 'GOCART_State', wrap, status) - VERIFY_(status) - self => wrap%ptr - - call ESMF_GridCompGet (GC, vm=vm, __RC__) - call ESMF_VMGet(vm, localPet=me, __RC__) - - if(self%use_threads) then - call MAPL_GetObjectFromGC (GC, MAPL, __RC__) - if(MAPL%is_threading_active()) then - call run_thread2(GC, import, export, clock, __RC__) - else - !call start_global_time_profiler('activate_threads2') - num_threads = 1 - !$ num_threads = omp_get_max_threads() - call MAPL%activate_threading(num_threads, __RC__) - !call stop_global_time_profiler('activate_threads2') - !call start_global_time_profiler('parallel2') - - allocate(statuses(num_threads), __STAT__) - statuses=0 - !$omp parallel default(none), & - !$omp& private(thread, subimport, subexport, thread_gc), & - !$omp& shared(gc, statuses, clock, MAPL) - - thread = 0 - !$ thread = omp_get_thread_num() - - subimport = MAPL%get_import_state() - subexport = MAPL%get_export_state() - thread_gc = MAPL%get_gridcomp() - - call run_thread2(thread_gc, subimport, subexport, clock, rc=statuses(thread+1)) - - !$omp end parallel - !call stop_global_time_profiler('parallel2') - - if (any(statuses /= ESMF_SUCCESS)) then - _FAIL('some thread failed') - end if - deallocate(statuses, __STAT__) - !call start_global_time_profiler('deactivate_threads2') - call MAPL%deactivate_threading(__RC__) - !call stop_global_time_profiler('deactivate_threads2') - end if - else - call run_thread2(GC, import, export, clock, __RC__) - end if - !call stop_global_time_profiler('run2()') - RETURN_(ESMF_SUCCESS) - end subroutine Run2 + end subroutine Run1 !============================================================================ !BOP @@ -704,7 +556,7 @@ end subroutine Run2 ! !INTERFACE: - subroutine run_thread2 (GC, import, export, clock, RC) + subroutine Run2 (GC, import, export, clock, RC) ! !ARGUMENTS: type (ESMF_GridComp), intent(inout) :: GC ! Gridded component @@ -1139,7 +991,7 @@ subroutine run_thread2 (GC, import, export, clock, RC) RETURN_(ESMF_SUCCESS) - end subroutine run_thread2 + end subroutine Run2 !=============================================================================== From 74a3ba7759a6f832a0c002ffe52a4fb10ee3417f Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Fri, 2 Sep 2022 12:07:54 -0400 Subject: [PATCH 07/28] Changed the restart option of spatially distributed internal fields that are not part of the original list of internal fields to MAPL_RestartSkip to esnure zero-diff with stock --- ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 | 6 +++--- ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc | 2 +- ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc | 4 ++-- ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 index e3133f03..a988adea 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 @@ -50,7 +50,6 @@ module GOCART2G_GridCompMod type(Constituent) :: NI real, allocatable :: wavelengths_profile(:) ! wavelengths for profile aop [nm] real, allocatable :: wavelengths_vertint(:) ! wavelengths for vertically integrated aop [nm] - logical :: use_threads = .FALSE. end type GOCART_State type wrap_ @@ -113,6 +112,7 @@ subroutine SetServices (GC, RC) integer :: n_wavelengths_profile, n_wavelengths_vertint, n_wavelengths_diagmie integer, allocatable, dimension(:) :: wavelengths_diagmie type (MAPL_MetaComp), pointer :: MAPL + logical :: use_threads __Iam__('SetServices') @@ -160,13 +160,13 @@ subroutine SetServices (GC, RC) call MAPL_ConfigSetAttribute (cf, self%wavelengths_profile, label='wavelengths_for_profile_aop_in_nm:', __RC__) call MAPL_ConfigSetAttribute (cf, self%wavelengths_vertint, label='wavelengths_for_vertically_integrated_aop_in_nm:', __RC__) call MAPL_ConfigSetAttribute (cf, wavelengths_diagmie, label='aerosol_monochromatic_optics_wavelength_in_nm_from_LUT:', __RC__) - call ESMF_ConfigGetAttribute (myCF, self%use_threads, label='use_threads:', default=.FALSE., __RC__) + call ESMF_ConfigGetAttribute (myCF, use_threads, label='use_threads:', default=.FALSE., __RC__) ! Get my internal MAPL_Generic state ! ----------------------------------- call MAPL_GetObjectFromGC (GC, MAPL, __RC__) ! set use_threads - call MAPL%set_use_threads(self%use_threads) + call MAPL%set_use_threads(use_threads) ! Get instances to determine what children will be born ! ----------------------------------------------------- diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc index 0d9a2205..3ae9c853 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc @@ -107,7 +107,7 @@ category: INTERNAL NO3an1 |kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Nitrate size bin 001 NO3an2 |kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Nitrate size bin 002 NO3an3 |kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Nitrate size bin 003 - XHNO3 |kg m-2 s-1| xyz | C | MAPL_RestartOptional | F | | buffer for NITRATE_HNO3 + XHNO3 |kg m-2 s-1| xyz | C | MAPL_RestartSkip | F | | buffer for NITRATE_HNO3 #******************************************************** # diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc index 7d29b0cb..98da955a 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc @@ -76,8 +76,8 @@ category: INTERNAL #---------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | UNGRIDDED | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME #---------------------------------------------------------------------------------------- - SS |kg kg-1| xyz | C | self%nbins | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sea Salt Mixing Ratio (bin %d) - DEEP_LAKES_MASK | 1 | xy | N | | | F | | Deep Lakes Mask + SS |kg kg-1| xyz | C | self%nbins | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sea Salt Mixing Ratio (bin %d) + DEEP_LAKES_MASK | 1 | xy | N | | MAPL_RestartSkip | F | | Deep Lakes Mask #******************************************************** # diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc index 07da343d..3932a3e7 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc @@ -107,7 +107,7 @@ category: INTERNAL SO2 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sulphur dioxide SO4 |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Sulphate aerosol MSA |kg kg-1| xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Methanesulphonic acid - H2O2_INIT |kg kg-1| xyz | C | MAPL_RestartOptional | F | | private H2O2 that is saved and used to initialize + H2O2_INIT |kg kg-1| xyz | C | MAPL_RestartSkip | F | | private H2O2 that is saved and used to initialize #******************************************************** From 07ef5a522817adffb33b11de77d4712d3d3315b7 Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Thu, 22 Sep 2022 14:24:42 -0400 Subject: [PATCH 08/28] Modified CMakeLists.txt file to always build with OpenMP enabled --- ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt | 3 ++- ESMF/GOCART2G_GridComp/CMakeLists.txt | 3 ++- ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt | 3 ++- ESMF/GOCART2G_GridComp/GA_Environment/CMakeLists.txt | 3 ++- ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt | 3 ++- ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt | 3 ++- ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt | 3 ++- Process_Library/CMakeLists.txt | 8 +++++--- 8 files changed, 19 insertions(+), 10 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt index 46e2d9f0..5cee19b7 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt @@ -14,6 +14,7 @@ foreach ( file ${rc_files} ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() -if (OMP) +# CMake has an OpenMP issue with NAG Fortran: https://gitlab.kitware.com/cmake/cmake/-/issues/21280 +if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "NAG") target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) endif () diff --git a/ESMF/GOCART2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/CMakeLists.txt index 6ab7b210..0df44f66 100644 --- a/ESMF/GOCART2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/CMakeLists.txt @@ -32,6 +32,7 @@ mapl_acg (${this} GOCART2G_StateSpecs.rc IMPORT_SPECS EXPORT_SPECS INTERNAL_SPECS GET_POINTERS DECLARE_POINTERS) -if (OMP) +# CMake has an OpenMP issue with NAG Fortran: https://gitlab.kitware.com/cmake/cmake/-/issues/21280 +if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "NAG") target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) endif () diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt index cfea1d12..f3662b33 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt @@ -14,6 +14,7 @@ foreach ( file ${rc_files} ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() -if (OMP) +# CMake has an OpenMP issue with NAG Fortran: https://gitlab.kitware.com/cmake/cmake/-/issues/21280 +if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "NAG") target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) endif () diff --git a/ESMF/GOCART2G_GridComp/GA_Environment/CMakeLists.txt b/ESMF/GOCART2G_GridComp/GA_Environment/CMakeLists.txt index 513337dd..c95604f2 100644 --- a/ESMF/GOCART2G_GridComp/GA_Environment/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/GA_Environment/CMakeLists.txt @@ -5,6 +5,7 @@ esma_add_library (${this} DEPENDENCIES MAPL Chem_Shared2G Process_Library esmf ) -if (OMP) +# CMake has an OpenMP issue with NAG Fortran: https://gitlab.kitware.com/cmake/cmake/-/issues/21280 +if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "NAG") target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) endif () diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt index 4c6f715b..233b1ae5 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt @@ -14,6 +14,7 @@ foreach ( file ${rc_files} ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() -if (OMP) +# CMake has an OpenMP issue with NAG Fortran: https://gitlab.kitware.com/cmake/cmake/-/issues/21280 +if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "NAG") target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) endif () diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt index f0742cac..06c1f146 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt @@ -14,6 +14,7 @@ foreach ( file ${rc_files} ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() -if (OMP) +# CMake has an OpenMP issue with NAG Fortran: https://gitlab.kitware.com/cmake/cmake/-/issues/21280 +if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "NAG") target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) endif () diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt b/ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt index 35110b01..eba7571e 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt @@ -14,6 +14,7 @@ foreach ( file ${rc_files} ) install( FILES ${file} DESTINATION etc/${dir} ) endforeach() -if (OMP) +# CMake has an OpenMP issue with NAG Fortran: https://gitlab.kitware.com/cmake/cmake/-/issues/21280 +if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "NAG") target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) endif () diff --git a/Process_Library/CMakeLists.txt b/Process_Library/CMakeLists.txt index ada9cd4c..d4d9ff1c 100644 --- a/Process_Library/CMakeLists.txt +++ b/Process_Library/CMakeLists.txt @@ -9,6 +9,8 @@ esma_add_library(${this} SRCS ${srcs} DEPENDENCIES esmf NetCDF::NetCDF_Fortran ) -if (OMP) - target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) -endif() + +# CMake has an OpenMP issue with NAG Fortran: https://gitlab.kitware.com/cmake/cmake/-/issues/21280 +if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "NAG") + target_link_libraries(${this} PRIVATE OpenMP::OpenMP_Fortran) +endif () From d6920c1c230345705fdc321e260932b41d1708fc Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Wed, 28 Sep 2022 11:54:02 -0400 Subject: [PATCH 09/28] Added descritpion for changes made for component level OpenMP threading to CHANGELOG --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 991c102e..589bc6a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added +Changes were made so GOCART2G and its children can be run with component level +OpenMP threading. The key change is to create the data structure ThreadWorkspace +to hold variables that should be private to each thread to avoid race conditions. +Additionally spatially distributed arrays that are not in any of the ESMF states +were added to the ESMF internal state so they could be properly handled when +the 'mini' ESMF sates are created. Those arrays are xhno3 for NI2G, h202_init +for SU2G, and deep_lakes_mask for SS2G. All of these arrays have MAPL_RestartSkip +option so they are not written to restart. ### Fixed From c3cf7a640441641c18a32c1b5f4d77f61e755f7e Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Thu, 29 Sep 2022 16:31:03 -0400 Subject: [PATCH 10/28] Changes consitent with MAPL for accessor functions to get number of threads and current thread --- .../GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 | 6 ++---- .../GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 | 6 ++---- .../GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 | 6 ++---- .../GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 | 9 +++------ 4 files changed, 9 insertions(+), 18 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 index 5d5c465f..cdb26ced 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 @@ -129,8 +129,7 @@ subroutine SetServices (GC, RC) ! ------------------------------------- allocate (self, __STAT__) wrap%ptr => self - num_threads = 1 - !$ num_threads = omp_get_max_threads() + num_threads = MAPL_get_num_threads() allocate(self%workspaces(0:num_threads-1), __STAT__) ! Load resource file @@ -835,8 +834,7 @@ subroutine Run1 (GC, import, export, clock, RC) ! Read any pointwise emissions, if requested ! ------------------------------------------ - thread = 0 - !$ thread = omp_get_thread_num() + thread = MAPL_get_current_thread() workspace => self%workspaces(thread) if(self%doing_point_emissions) then call StrTemplate(fname, self%point_emissions_srcfilen, xid='unknown', & diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 index 9703706a..e40a92c4 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 @@ -134,8 +134,7 @@ subroutine SetServices (GC, RC) allocate (self, __STAT__) wrap%ptr => self - num_threads = 1 - !$ num_threads = omp_get_max_threads() + num_threads = MAPL_get_num_threads() allocate(self%workspaces(0:num_threads-1), __STAT__) ! Load resource file @@ -803,8 +802,7 @@ subroutine Run1 (GC, import, export, clock, RC) ! Read point emissions file once per day ! -------------------------------------- - thread = 0 - !$ thread = omp_get_thread_num() + thread = MAPL_get_current_thread() workspace => self%workspaces(thread) if (self%doing_point_emissions) then if (workspace%day_save /= idd) then diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 index 7c6e255a..4778efcd 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 @@ -118,8 +118,7 @@ subroutine SetServices ( GC, RC ) allocate (self, __STAT__) wrap%ptr => self - num_threads = 1 - !$ num_threads = omp_get_max_threads() + num_threads = MAPL_get_num_threads() allocate(self%workspaces(0:num_threads-1), __STAT__) ! Load resource file @@ -778,8 +777,7 @@ subroutine Run2 (GC, import, export, clock, RC) alarm_is_ringing = ESMF_AlarmIsRinging(alarm, __RC__) ! Save local copy of HNO3 for first pass through run method regardless - thread = 0 - !$ thread = omp_get_thread_num() + thread = MAPL_get_current_thread() workspace => self%workspaces(thread) if (workspace%first) then diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 index 98e77260..5588272b 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 @@ -153,8 +153,7 @@ subroutine SetServices ( GC, RC ) allocate (self, __STAT__) wrap%ptr => self - num_threads = 1 - !$ num_threads = omp_get_max_threads() + num_threads = MAPL_get_num_threads() allocate(self%workspaces(0:num_threads-1), __STAT__) ! Load resource file @@ -832,8 +831,7 @@ subroutine Run1 (GC, import, export, clock, RC) ! Update emissions/production if necessary (daily) ! ----------------------------------------------- - thread = 0 - !$ thread = omp_get_thread_num() + thread = MAPL_get_current_thread() workspace => self%workspaces(thread) if(workspace%nymd_last /= nymd) then @@ -1037,8 +1035,7 @@ subroutine Run2 (GC, import, export, clock, RC) VERIFY_(STATUS) self => wrap%ptr - thread = 0 - !$ thread = omp_get_thread_num() + thread = MAPL_get_current_thread() workspace => self%workspaces(thread) call ESMF_ClockGetAlarm(clock, 'H2O2_RECYCLE_ALARM', alarm, __RC__) From 85334d3c42f5a845b27834bbbdc44ee021522ffe Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Thu, 13 Oct 2022 14:37:45 -0400 Subject: [PATCH 11/28] removed remaining 'save' attributes from GOCART2G_Process Chem_BiomassDiurnal for thread safety and zeor-diff --- Process_Library/GOCART2G_Process.F90 | 31 +++++++++++++--------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/Process_Library/GOCART2G_Process.F90 b/Process_Library/GOCART2G_Process.F90 index a4983fdb..96848517 100644 --- a/Process_Library/GOCART2G_Process.F90 +++ b/Process_Library/GOCART2G_Process.F90 @@ -10307,8 +10307,8 @@ subroutine Chem_BiomassDiurnal ( Eout, Ein, lons, lats, nhms, cdt) ! Fixed normalization factors; a more accurate normalization would take ! in consideration longitude and time step ! --------------------------------------------------------------------- - real*8, save :: fBoreal = -1., fNonBoreal = -1 - real, save :: fDT=-1 + real*8 :: fBoreal, fNonBoreal + real :: fDT integer :: hh, mm, ss, ndt, i, j, k integer :: NN @@ -10318,22 +10318,19 @@ subroutine Chem_BiomassDiurnal ( Eout, Ein, lons, lats, nhms, cdt) ! Normalization factor depends on timestep ! ---------------------------------------- - if ( fDT /= cdt ) then - fBoreal = 0.0 - fNonBoreal = 0.0 - NN = 0 - ndt = max(1,nint(cdt/DT)) - - do k = 1, N, ndt - NN = NN + 1 - fBoreal = fBoreal + Boreal(k) - fNonBoreal = fNonBoreal + NonBoreal(k) - end do + fBoreal = 0.0 + fNonBoreal = 0.0 + NN = 0 + ndt = max(1,nint(cdt/DT)) + + do k = 1, N, ndt + NN = NN + 1 + fBoreal = fBoreal + Boreal(k) + fNonBoreal = fNonBoreal + NonBoreal(k) + end do - fBoreal = fBoreal / NN - fnonBoreal = fnonBoreal / NN - fDT = cdt ! so it recalculates only if necessary - end if + fBoreal = fBoreal / NN + fnonBoreal = fnonBoreal / NN ! Find number of secs since begining of the day (GMT) From 4ab74a98612f6ba5c8102219f35b2b7cf94cafbb Mon Sep 17 00:00:00 2001 From: Amidu Oloso Date: Tue, 18 Oct 2022 19:53:07 -0400 Subject: [PATCH 12/28] Minor edit to replace 'RC=STATUS' with '_RC' --- ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 index 492ca7ff..78030b47 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 @@ -343,8 +343,7 @@ subroutine SetServices ( GC, RC ) ! Store internal state in GC ! -------------------------- - call ESMF_UserCompSetInternalState ( GC, 'SU2G_GridComp', wrap, STATUS ) - VERIFY_(STATUS) + call ESMF_UserCompSetInternalState ( GC, 'SU2G_GridComp', wrap, _RC ) ! Set generic services ! ---------------------------------- From 8b64a23c302a7b1a9baa43d57b428d31e7f2c93e Mon Sep 17 00:00:00 2001 From: vbuchard Date: Wed, 19 Oct 2022 16:43:50 -0400 Subject: [PATCH 13/28] vb: Computed the total attenuated backscatter coef from TOA at 532nm --- .../CA2G_GridComp/CA2G_GridCompMod.F90 | 4 +- .../CA2G_GridComp/CA2G_StateSpecs.rc | 1 + .../DU2G_GridComp/DU2G_GridCompMod.F90 | 2 +- .../DU2G_GridComp/DU2G_StateSpecs.rc | 1 + .../GOCART2G_GridCompMod.F90 | 109 +++++++++++++++++- ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc | 11 +- .../NI2G_GridComp/NI2G_GridCompMod.F90 | 2 +- .../NI2G_GridComp/NI2G_StateSpecs.rc | 1 + .../SS2G_GridComp/SS2G_GridCompMod.F90 | 2 +- .../SS2G_GridComp/SS2G_StateSpecs.rc | 1 + .../SU2G_GridComp/SU2G_GridCompMod.F90 | 2 +- .../SU2G_GridComp/SU2G_StateSpecs.rc | 1 + 12 files changed, 122 insertions(+), 15 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 index d6047cc5..e3579606 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90 @@ -1023,8 +1023,8 @@ subroutine Run2 (GC, import, export, clock, RC) sfcmass=SMASS, colmass=CMASS, mass=MASS,& exttau=EXTTAU,stexttau=STEXTTAU, scatau=SCATAU, stscatau=STSCATAU,& fluxu=FLUXU, fluxv=FLUXV, & - conc=CONC, extcoef=EXTCOEF, scacoef=SCACOEF, angstrom=ANGSTR, aerindx=AERIDX,& - NO3nFlag=.false., __RC__) + conc=CONC, extcoef=EXTCOEF, scacoef=SCACOEF, bckcoef=BCKCOEF, angstrom=ANGSTR,& + aerindx=AERIDX, NO3nFlag=.false., __RC__) i1 = lbound(RH2, 1); i2 = ubound(RH2, 1) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc index 83057eae..c47c3599 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc @@ -82,6 +82,7 @@ category: EXPORT *SCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Scattering Coefficient *SCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Scattering Coefficient - Fixed RH=20% *SCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Scattering Coefficient - Fixed RH=80% + *BCKCOEF | m-1 sr-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Backscatter Coefficient #............ | ............ | ..... | ..... | ....... | ............................................ *EM | kg m-2 s-1 | xy | N | nbins | Carbonaceous Aerosol Emission (Bin %d) *SD | kg m-2 s-1 | xy | N | nbins | Carbonaceous Aerosol Sedimentation (Bin %d) diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 index 27e18784..ad089fc5 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90 @@ -961,7 +961,7 @@ subroutine Run2 (GC, import, export, clock, RC) DUSMASS, DUCMASS, DUMASS, DUEXTTAU, DUSTEXTTAU, DUSCATAU,DUSTSCATAU, & DUSMASS25, DUCMASS25, DUMASS25, DUEXTT25, DUSCAT25, & DUFLUXU, DUFLUXV, DUCONC, DUEXTCOEF, DUSCACOEF, & - DUEXTTFM, DUSCATFM, DUANGSTR, DUAERIDX, NO3nFlag=.false., __RC__ ) + DUBCKCOEF,DUEXTTFM, DUSCATFM, DUANGSTR, DUAERIDX, NO3nFlag=.false., __RC__ ) i1 = lbound(RH2, 1); i2 = ubound(RH2, 1) diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_StateSpecs.rc index ea832c98..a53bdd55 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_StateSpecs.rc @@ -67,6 +67,7 @@ category: EXPORT DUSCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Dust Scattering Coefficient DUSCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Dust Scattering Coefficient - Fixed RH=20% DUSCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | Dust Scattering Coefficient - Fixed RH=80% + DUBCKCOEF | m-1 sr-1 | xyz | C | size(self%wavelengths_profile) | Dust Backscatter Coefficient #........................................................................................ DUSMASS | kg m-3 | xy | N | | Dust Surface Mass Concentration DUCMASS | kg m-2 | xy | N | | Dust Column Mass Density diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 index c4096081..76e258b1 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 @@ -203,7 +203,8 @@ subroutine SetServices (GC, RC) #include "GOCART2G_Export___.h" - +#include "GOCART2G_Import___.h" +#include "GOCART2G_Internal___.h" ! Add connectivities for Nitrate component ! Nitrate currently only supports one Nitrate component. Nitrate only @@ -584,6 +585,7 @@ subroutine Run2 (GC, import, export, clock, RC) real, pointer, dimension(:,:,:,:) :: duextcoef, duscacoef real, pointer, dimension(:,:,:,:) :: duextcoefrh20, duextcoefrh80 real, pointer, dimension(:,:,:,:) :: duscacoefrh20, duscacoefrh80 + real, pointer, dimension(:,:,:,:) :: dubckcoef real, pointer, dimension(:,:) :: duangstr, dusmass, & dusmass25 real, pointer, dimension(:,:,:) :: ssexttau, ssstexttau, & @@ -593,6 +595,7 @@ subroutine Run2 (GC, import, export, clock, RC) real, pointer, dimension(:,:,:,:) :: ssextcoef, ssscacoef real, pointer, dimension(:,:,:,:) :: ssextcoefrh20, ssextcoefrh80 real, pointer, dimension(:,:,:,:) :: ssscacoefrh20, ssscacoefrh80 + real, pointer, dimension(:,:,:,:) :: ssbckcoef real, pointer, dimension(:,:) :: ssangstr, sssmass, & sssmass25 real, pointer, dimension(:,:,:) :: niexttau, nistexttau, & @@ -602,6 +605,7 @@ subroutine Run2 (GC, import, export, clock, RC) real, pointer, dimension(:,:,:,:) :: niextcoef, niscacoef real, pointer, dimension(:,:,:,:) :: niextcoefrh20, niextcoefrh80 real, pointer, dimension(:,:,:,:) :: niscacoefrh20, niscacoefrh80 + real, pointer, dimension(:,:,:,:) :: nibckcoef real, pointer, dimension(:,:) :: niangstr, nismass, & nismass25 real, pointer, dimension(:,:) :: nh4smass @@ -610,26 +614,37 @@ subroutine Run2 (GC, import, export, clock, RC) real, pointer, dimension(:,:,:,:) :: suextcoef, suscacoef real, pointer, dimension(:,:,:,:) :: suextcoefrh20, suextcoefrh80 real, pointer, dimension(:,:,:,:) :: suscacoefrh20, suscacoefrh80 + real, pointer, dimension(:,:,:,:) :: subckcoef real, pointer, dimension(:,:) :: suangstr, so4smass real, pointer, dimension(:,:,:) :: bcexttau, bcstexttau, bcscatau, bcstscatau real, pointer, dimension(:,:,:,:) :: bcextcoef, bcscacoef real, pointer, dimension(:,:,:,:) :: bcextcoefrh20, bcextcoefrh80 real, pointer, dimension(:,:,:,:) :: bcscacoefrh20, bcscacoefrh80 + real, pointer, dimension(:,:,:,:) :: bcbckcoef real, pointer, dimension(:,:) :: bcangstr, bcsmass real, pointer, dimension(:,:,:) :: ocexttau, ocstexttau, ocscatau, ocstscatau real, pointer, dimension(:,:,:,:) :: ocextcoef, ocscacoef real, pointer, dimension(:,:,:,:) :: ocextcoefrh20, ocextcoefrh80 real, pointer, dimension(:,:,:,:) :: ocscacoefrh20, ocscacoefrh80 + real, pointer, dimension(:,:,:,:) :: ocbckcoef real, pointer, dimension(:,:) :: ocangstr, ocsmass real, pointer, dimension(:,:,:) :: brexttau, brstexttau, brscatau, brstscatau real, pointer, dimension(:,:,:,:) :: brextcoef, brscacoef real, pointer, dimension(:,:,:,:) :: brextcoefrh20, brextcoefrh80 real, pointer, dimension(:,:,:,:) :: brscacoefrh20, brscacoefrh80 + real, pointer, dimension(:,:,:,:) :: brbckcoef real, pointer, dimension(:,:) :: brangstr, brsmass real, pointer, dimension(:,:,:) :: pso4 + real, allocatable :: aerabcktoa(:,:,:), molabcktoa(:,:,:) real, allocatable :: tau1(:,:), tau2(:,:) + real, allocatable :: backscat_mol(:,:,:) + real, allocatable :: P(:,:,:), delz(:,:,:) + real, allocatable :: tau_mol_layer(:,:,:), tau_aer_layer(:,:,:) + real, allocatable :: tau_mol(:,:), tau_aer(:,:) real :: c1, c2, c3 - integer :: ind550 + real, parameter :: pi = 3.141529265 + integer :: ind550, ind532 + integer :: i1, i2, j1, j2, km, k,kk #include "GOCART2G_DeclarePointer___.h" @@ -669,19 +684,20 @@ subroutine Run2 (GC, import, export, clock, RC) if(associated(totscat25)) totscat25 = 0. if(associated(totexttfm)) totexttfm = 0. if(associated(totscatfm)) totscatfm = 0. - if(associated(totextcoef)) totextcoef = 0. + if(associated(totextcoef)) totextcoef = 0. if(associated(totextcoefrh20)) totextcoefrh20 = 0. if(associated(totextcoefrh80)) totextcoefrh80 = 0. - if(associated(totscacoef)) totscacoef = 0. + if(associated(totscacoef)) totscacoef = 0. if(associated(totscacoefrh20)) totscacoefrh20 = 0. if(associated(totscacoefrh80)) totscacoefrh80 = 0. + if(associated(totbckcoef)) totbckcoef = 0. + if(associated(totabcktoa)) totabcktoa = 0. if(associated(pm)) pm(:,:) = 0. if(associated(pm25)) pm25(:,:) = 0. if(associated(pm_rh35)) pm_rh35(:,:) = 0. if(associated(pm25_rh35)) pm25_rh35(:,:) = 0. if(associated(pm_rh50)) pm_rh50(:,:) = 0. if(associated(pm25_rh50)) pm25_rh50(:,:) = 0. - if(associated(pso4tot)) pso4tot(:,:,:) = 0. ! Run the children @@ -722,6 +738,7 @@ subroutine Run2 (GC, import, export, clock, RC) c3 = -log(470./870.) end if + ! Dust do n = 1, size(self%DU%instances) if ((self%DU%instances(n)%is_active) .and. (index(self%DU%instances(n)%name, 'data') == 0 )) then @@ -735,6 +752,7 @@ subroutine Run2 (GC, import, export, clock, RC) call MAPL_GetPointer (gex(self%DU%instances(n)%id), duscacoef, 'DUSCACOEF', __RC__) call MAPL_GetPointer (gex(self%DU%instances(n)%id), duscacoefrh20, 'DUSCACOEFRH20', __RC__) call MAPL_GetPointer (gex(self%DU%instances(n)%id), duscacoefrh80, 'DUSCACOEFRH80', __RC__) + call MAPL_GetPointer (gex(self%DU%instances(n)%id), dubckcoef, 'DUBCKCOEF', __RC__) call MAPL_GetPointer (gex(self%DU%instances(n)%id), duextt25, 'DUEXTT25', __RC__) call MAPL_GetPointer (gex(self%DU%instances(n)%id), duscat25, 'DUSCAT25', __RC__) call MAPL_GetPointer (gex(self%DU%instances(n)%id), duexttfm, 'DUEXTTFM', __RC__) @@ -760,6 +778,7 @@ subroutine Run2 (GC, import, export, clock, RC) if(associated(totscacoef) .and. associated(duscacoef)) totscacoef(:,:,:,w) = totscacoef(:,:,:,w)+duscacoef(:,:,:,w) if(associated(totscacoefrh20) .and. associated(duscacoefrh20)) totscacoefrh20(:,:,:,w) = totscacoefrh20(:,:,:,w)+duscacoefrh20(:,:,:,w) if(associated(totscacoefrh80) .and. associated(duscacoefrh80)) totscacoefrh80(:,:,:,w) = totscacoefrh80(:,:,:,w)+duscacoefrh80(:,:,:,w) + if(associated(totbckcoef) .and. associated(dubckcoef)) totbckcoef(:,:,:,w) = totbckcoef(:,:,:,w)+dubckcoef(:,:,:,w) end do call MAPL_GetPointer (gex(self%DU%instances(n)%id), dusmass, 'DUSMASS', __RC__) @@ -791,6 +810,7 @@ subroutine Run2 (GC, import, export, clock, RC) call MAPL_GetPointer (gex(self%SS%instances(n)%id), ssscacoef, 'SSSCACOEF', __RC__) call MAPL_GetPointer (gex(self%SS%instances(n)%id), ssscacoefrh20, 'SSSCACOEFRH20', __RC__) call MAPL_GetPointer (gex(self%SS%instances(n)%id), ssscacoefrh80, 'SSSCACOEFRH80', __RC__) + call MAPL_GetPointer (gex(self%SS%instances(n)%id), ssbckcoef, 'SSBCKCOEF', __RC__) call MAPL_GetPointer (gex(self%SS%instances(n)%id), ssextt25, 'SSEXTT25', __RC__) call MAPL_GetPointer (gex(self%SS%instances(n)%id), ssscat25, 'SSSCAT25', __RC__) call MAPL_GetPointer (gex(self%SS%instances(n)%id), ssexttfm, 'SSEXTTFM', __RC__) @@ -816,6 +836,7 @@ subroutine Run2 (GC, import, export, clock, RC) if(associated(totscacoef) .and. associated(ssscacoef)) totscacoef(:,:,:,w) = totscacoef(:,:,:,w)+ssscacoef(:,:,:,w) if(associated(totscacoefrh20) .and. associated(ssscacoefrh20)) totscacoefrh20(:,:,:,w) = totscacoefrh20(:,:,:,w)+ssscacoefrh20(:,:,:,w) if(associated(totscacoefrh80) .and. associated(ssscacoefrh80)) totscacoefrh80(:,:,:,w) = totscacoefrh80(:,:,:,w)+ssscacoefrh80(:,:,:,w) + if(associated(totbckcoef) .and. associated(ssbckcoef)) totbckcoef(:,:,:,w) = totbckcoef(:,:,:,w)+ssbckcoef(:,:,:,w) enddo call MAPL_GetPointer (gex(self%SS%instances(n)%id), sssmass, 'SSSMASS', __RC__) @@ -847,6 +868,7 @@ subroutine Run2 (GC, import, export, clock, RC) call MAPL_GetPointer (gex(self%NI%instances(n)%id), niscacoef, 'NISCACOEF', __RC__) call MAPL_GetPointer (gex(self%NI%instances(n)%id), niscacoefrh20, 'NISCACOEFRH20', __RC__) call MAPL_GetPointer (gex(self%NI%instances(n)%id), niscacoefrh80, 'NISCACOEFRH80', __RC__) + call MAPL_GetPointer (gex(self%NI%instances(n)%id), nibckcoef, 'NIBCKCOEF', __RC__) call MAPL_GetPointer (gex(self%NI%instances(n)%id), niextt25, 'NIEXTT25', __RC__) call MAPL_GetPointer (gex(self%NI%instances(n)%id), niscat25, 'NISCAT25', __RC__) call MAPL_GetPointer (gex(self%NI%instances(n)%id), niexttfm, 'NIEXTTFM', __RC__) @@ -872,6 +894,7 @@ subroutine Run2 (GC, import, export, clock, RC) if(associated(totscacoef) .and. associated(niscacoef)) totscacoef(:,:,:,w) = totscacoef(:,:,:,w)+niscacoef(:,:,:,w) if(associated(totscacoefrh20) .and. associated(niscacoefrh20)) totscacoefrh20(:,:,:,w) = totscacoefrh20(:,:,:,w)+niscacoefrh20(:,:,:,w) if(associated(totscacoefrh80) .and. associated(niscacoefrh80)) totscacoefrh80(:,:,:,w) = totscacoefrh80(:,:,:,w)+niscacoefrh80(:,:,:,w) + if(associated(totbckcoef) .and. associated(nibckcoef)) totbckcoef(:,:,:,w) = totbckcoef(:,:,:,w)+nibckcoef(:,:,:,w) end do call MAPL_GetPointer (gex(self%NI%instances(n)%id), nismass, 'NISMASS', __RC__) @@ -901,6 +924,7 @@ subroutine Run2 (GC, import, export, clock, RC) call MAPL_GetPointer (gex(self%SU%instances(n)%id), suscacoef, 'SUSCACOEF', __RC__) call MAPL_GetPointer (gex(self%SU%instances(n)%id), suscacoefrh20, 'SUSCACOEFRH20', __RC__) call MAPL_GetPointer (gex(self%SU%instances(n)%id), suscacoefrh80, 'SUSCACOEFRH80', __RC__) + call MAPL_GetPointer (gex(self%SU%instances(n)%id), subckcoef, 'SUBCKCOEF', __RC__) call MAPL_GetPointer (gex(self%SU%instances(n)%id), sustexttau, 'SUSTEXTTAU', __RC__) call MAPL_GetPointer (gex(self%SU%instances(n)%id), suscatau, 'SUSCATAU', __RC__) call MAPL_GetPointer (gex(self%SU%instances(n)%id), sustscatau, 'SUSTSCATAU', __RC__) @@ -925,6 +949,7 @@ subroutine Run2 (GC, import, export, clock, RC) if(associated(totscacoef) .and. associated(suscacoef)) totscacoef(:,:,:,w) = totscacoef(:,:,:,w)+suscacoef(:,:,:,w) if(associated(totscacoefrh20) .and. associated(suscacoefrh20)) totscacoefrh20(:,:,:,w) = totscacoefrh20(:,:,:,w)+suscacoefrh20(:,:,:,w) if(associated(totscacoefrh80) .and. associated(suscacoefrh80)) totscacoefrh80(:,:,:,w) = totscacoefrh80(:,:,:,w)+suscacoefrh80(:,:,:,w) + if(associated(totbckcoef) .and. associated(subckcoef)) totbckcoef(:,:,:,w) = totbckcoef(:,:,:,w)+subckcoef(:,:,:,w) end do call MAPL_GetPointer (gex(self%SU%instances(n)%id), pso4, 'PSO4', __RC__) @@ -971,6 +996,7 @@ subroutine Run2 (GC, import, export, clock, RC) call MAPL_GetPointer (gex(self%CA%instances(n)%id), bcscacoef, 'CA.bcSCACOEF', __RC__) call MAPL_GetPointer (gex(self%CA%instances(n)%id), bcscacoefrh20, 'CA.bcSCACOEFRH20', __RC__) call MAPL_GetPointer (gex(self%CA%instances(n)%id), bcscacoefrh80, 'CA.bcSCACOEFRH80', __RC__) + call MAPL_GetPointer (gex(self%CA%instances(n)%id), bcbckcoef, 'CA.bcBCKCOEF', __RC__) ! Iterate over the wavelengths do w = 1, size(self%wavelengths_vertint) @@ -991,6 +1017,7 @@ subroutine Run2 (GC, import, export, clock, RC) if(associated(totscacoef) .and. associated(bcscacoef)) totscacoef(:,:,:,w) = totscacoef(:,:,:,w)+bcscacoef(:,:,:,w) if(associated(totscacoefrh20) .and. associated(bcscacoefrh20)) totscacoefrh20(:,:,:,w) = totscacoefrh20(:,:,:,w)+bcscacoefrh20(:,:,:,w) if(associated(totscacoefrh80) .and. associated(bcscacoefrh80)) totscacoefrh80(:,:,:,w) = totscacoefrh80(:,:,:,w)+bcscacoefrh80(:,:,:,w) + if(associated(totbckcoef) .and. associated(bcbckcoef)) totbckcoef(:,:,:,w) = totbckcoef(:,:,:,w)+bcbckcoef(:,:,:,w) end do call MAPL_GetPointer (gex(self%CA%instances(n)%id), bcsmass, 'CA.bcSMASS', __RC__) @@ -1019,6 +1046,7 @@ subroutine Run2 (GC, import, export, clock, RC) call MAPL_GetPointer (gex(self%CA%instances(n)%id), ocscacoef, 'CA.ocSCACOEF', __RC__) call MAPL_GetPointer (gex(self%CA%instances(n)%id), ocscacoefrh20, 'CA.ocSCACOEFRH20', __RC__) call MAPL_GetPointer (gex(self%CA%instances(n)%id), ocscacoefrh80, 'CA.ocSCACOEFRH80', __RC__) + call MAPL_GetPointer (gex(self%CA%instances(n)%id), ocbckcoef, 'CA.ocBCKCOEF', __RC__) ! Iterate over the wavelengths do w = 1, size(self%wavelengths_vertint) @@ -1038,7 +1066,8 @@ subroutine Run2 (GC, import, export, clock, RC) if(associated(totextcoefrh80) .and. associated(ocextcoefrh80)) totextcoefrh80(:,:,:,w) = totextcoefrh80(:,:,:,w)+ocextcoefrh80(:,:,:,w) if(associated(totscacoef) .and. associated(ocscacoef)) totscacoef(:,:,:,w) = totscacoef(:,:,:,w)+ocscacoef(:,:,:,w) if(associated(totscacoefrh20) .and. associated(ocscacoefrh20)) totscacoefrh20(:,:,:,w) = totscacoefrh20(:,:,:,w)+ocscacoefrh20(:,:,:,w) - if(associated(totscacoefrh80) .and. associated(ocscacoefrh80)) totscacoefrh80(:,:,:,w) = totscacoefrh80(:,:,:,w)+ocscacoefrh80(:,:,:,w) + if(associated(totscacoefrh20) .and. associated(ocscacoefrh20)) totscacoefrh20(:,:,:,w) = totscacoefrh20(:,:,:,w)+ocscacoefrh20(:,:,:,w) + if(associated(totbckcoef) .and. associated(ocbckcoef)) totbckcoef(:,:,:,w) = totbckcoef(:,:,:,w)+ocbckcoef(:,:,:,w) end do call MAPL_GetPointer (gex(self%CA%instances(n)%id), ocsmass, 'CA.ocSMASS', __RC__) @@ -1067,6 +1096,7 @@ subroutine Run2 (GC, import, export, clock, RC) call MAPL_GetPointer (gex(self%CA%instances(n)%id), brscacoef, 'CA.brSCACOEF', __RC__) call MAPL_GetPointer (gex(self%CA%instances(n)%id), brscacoefrh20, 'CA.brSCACOEFRH20', __RC__) call MAPL_GetPointer (gex(self%CA%instances(n)%id), brscacoefrh80, 'CA.brSCACOEFRH80', __RC__) + call MAPL_GetPointer (gex(self%CA%instances(n)%id), brbckcoef, 'CA.brBCKCOEF', __RC__) ! Iterate over the wavelengths do w = 1, size(self%wavelengths_vertint) @@ -1087,6 +1117,7 @@ subroutine Run2 (GC, import, export, clock, RC) if(associated(totscacoef) .and. associated(brscacoef)) totscacoef(:,:,:,w) = totscacoef(:,:,:,w)+brscacoef(:,:,:,w) if(associated(totscacoefrh20) .and. associated(brscacoefrh20)) totscacoefrh20(:,:,:,w) = totscacoefrh20(:,:,:,w)+brscacoefrh20(:,:,:,w) if(associated(totscacoefrh80) .and. associated(brscacoefrh80)) totscacoefrh80(:,:,:,w) = totscacoefrh80(:,:,:,w)+brscacoefrh80(:,:,:,w) + if(associated(totbckcoef) .and. associated(brbckcoef)) totbckcoef(:,:,:,w) = totbckcoef(:,:,:,w)+brbckcoef(:,:,:,w) end do call MAPL_GetPointer (gex(self%CA%instances(n)%id), brsmass, 'CA.brSMASS', __RC__) @@ -1109,6 +1140,72 @@ subroutine Run2 (GC, import, export, clock, RC) totangstr = log(tau1/tau2)/c3 end if +! Calculate the total (molecular + aer) single scattering attenuated backscater coef from the TOA + if(associated(totabcktoa) .and. associated(totextcoef) .and. associated(totbckcoef)) then + ind532 = 0 + do w = 1, size(self%wavelengths_profile) ! find index for 532nm to compute TBA + if ((self%wavelengths_profile(w)*1.e-9 .ge. 5.31e-7) .and. & + (self%wavelengths_profile(w)*1.e-9 .le. 5.33e-7)) then + ind532 = w + exit + end if + end do + + if (ind532 == 0) then + print*,trim(Iam),' : 532nm wavelengths is not present in GOCART2G_GridComp.rc.',& + ' Cannot produce TOTBCKCOEF variable without 532nm wavelength.' + VERIFY_(100) + end if + + ! Pressure at layer edges (ple shape (im,jm, km+1) on the edge + + i1 = lbound(ple, 1); i2 = ubound(ple, 1) + j1 = lbound(ple, 2); j2 = ubound(ple, 2) + km = ubound(ple, 3) ! km =72 index starts at 0 + ! Pressure for each layer + allocate(P(i1:i2,j1:j2,km), __STAT__) + do k = 1, km + P(:,:,k) = 0.5 * (ple(:,:,k-1) + ple(:,:,k)) ! in Pa + enddo + + !molecular backscattering cross section for each layer at 532nm: Cair * P(Pa) / T(K) + !Cair = 4.51944e-9 at 532nm # unit K Pa-1 m-1 sr-1 http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19960051003.pdf + allocate(backscat_mol(i1:i2,j1:j2,km), __STAT__) + backscat_mol = 5.45e-32/1.380648e-23 * (532./550.)**(-4.0) * P / T + ! tau mol for each layer + allocate(tau_mol_layer(i1:i2,j1:j2,km), delz(i1:i2,j1:j2,km),__STAT__) + delz = delp / (MAPL_GRAV * airdens) + tau_mol_layer = backscat_mol * 8.* pi /3. * delz + + ! tau aer for each layer + allocate(tau_aer_layer(i1:i2,j1:j2,km), __STAT__) + tau_aer_layer = totextcoef(:,:,:,ind532) * delz + + allocate(molabcktoa(i1:i2,j1:j2,km), __STAT__) + allocate(aerabcktoa(i1:i2,j1:j2,km), __STAT__) + + allocate(tau_aer(i1:i2,j1:j2), __STAT__) + allocate(tau_mol(i1:i2,j1:j2), __STAT__) + ! top layer + totabcktoa(:,:,1) = (totbckcoef(:,:,1,ind532) + backscat_mol(:,:,1)) * exp(-tau_aer_layer(:,:,1)) * exp(-tau_mol_layer(:,:,1)) + aerabcktoa(:,:,1) = totbckcoef(:,:,1,ind532) * exp(-tau_aer_layer(:,:,1)) + molabcktoa(:,:,1) = backscat_mol(:,:,1) * exp(-tau_mol_layer(:,:,1)) + ! layer 2 to the layer at the surface(km-1) + do k = 2, km + tau_aer = 0. + tau_mol = 0. ! for each layer + do kk = 1, k + tau_aer = tau_aer + tau_aer_layer(:,:,kk) + tau_mol = tau_mol + tau_mol_layer(:,:,kk) + enddo + tau_aer = tau_aer + 0.5 * tau_aer_layer(:,:,k) + tau_mol = tau_mol + 0.5 * tau_mol_layer(:,:,k) + totabcktoa(:,:,k) = (totbckcoef(:,:,k,ind532) + backscat_mol(:,:,k)) * exp(-tau_aer) * exp(-tau_mol) + aerabcktoa(:,:,k) = totbckcoef(:,:,k,ind532) * exp(-2*tau_aer) + molabcktoa(:,:,k) = backscat_mol(:,:,k) * exp(-2*tau_mol) + enddo + endif ! end of total attenuated backscatter coef calculation + RETURN_(ESMF_SUCCESS) end subroutine Run2 diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc index 2132ce85..710b82be 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc @@ -5,10 +5,13 @@ category: IMPORT #---------------------------------------------------------------------------------------- # VARIABLE | DIMENSIONS | Additional Metadata #---------------------------------------------------------------------------------------- - NAME | UNITS | DIMS | VLOC | COND | LONG NAME + NAME | UNITS | DIMS | VLOC | RESTART | LONG NAME #---------------------------------------------------------------------------------------- -# DELP | Pa | xyz | C | | pressure_thickness -# RH2 | 1 | xyz | C | | Rel_Hum_after_moist + DELP | Pa | xyz | C | | pressure_thickness +# RH2 | 1 | xyz | C | | Rel_Hum_after_moist + AIRDENS | kg/m^3 | xyz | C | OPT | moist_air_density + T | K | xyz | C | OPT | air_temperature + PLE | Pa | xyz | E | OPT | air_pressure category: EXPORT #---------------------------------------------------------------------------------------- @@ -33,6 +36,8 @@ category: EXPORT TOTSCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Scattering coefficient TOTSCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Scattering coefficient - Fixed RH=20% TOTSCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Scattering coefficient - Fixed RH=80% + TOTBCKCOEF | m-1 sr-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Single Scattering Backscatter coefficient + TOTABCKTOA | m-1 sr-1 | xyz | C | | Total Attenuated Backscatter Coefficient [532nm] PM | kg m-3 | xy | N | | Total reconstructed PM PM_RH35 | kg m-3 | xy | N | | Total reconstructed PM(RH=35%) PM_RH50 | kg m-3 | xy | N | | Total reconstructed PM(RH=50%) diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 index c068512c..c8bd44cb 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90 @@ -970,7 +970,7 @@ subroutine Run2 (GC, import, export, clock, RC) delp=delp, ple=ple, tropp=tropp,sfcmass=NISMASS, colmass=NICMASS, mass=NIMASS, conc=NICONC, & exttau=NIEXTTAU, stexttau=NISTEXTTAU,scatau=NISCATAU, stscatau=NISTSCATAU,& fluxu=NIFLUXU, fluxv=NIFLUXV, extcoef=NIEXTCOEF, scacoef=NISCACOEF, & - angstrom=NIANGSTR, __RC__ ) + bckcoef=NIBCKCOEF,angstrom=NIANGSTR, __RC__ ) i1 = lbound(RH2, 1); i2 = ubound(RH2, 1) j1 = lbound(RH2, 2); j2 = ubound(RH2, 2) diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc index 7531b822..fbbdea47 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc @@ -61,6 +61,7 @@ category: EXPORT NISCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Nitrate Scattering Coefficient NISCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Nitrate Scattering Coefficient - fixed RH=20% NISCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | Nitrate Scattering Coefficient - fixed RH=80% + NIBCKCOEF | m-1 sr-1 | xyz | C | size(self%wavelengths_profile) | Nitrate Backscatter Coefficient # ............. | ............ | ..... | ..... | ........... | .................................. NIPNO3AQ | kg m-2 s-1 | xy | N | | Nitrate Production from Aqueous Chemistry NIPNH4AQ | kg m-2 s-1 | xy | N | | Ammonium Production from Aqueous Chemistry diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 index b71faff9..94d75f5b 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90 @@ -812,7 +812,7 @@ subroutine Run2 (GC, import, export, clock, RC) self%wavelengths_vertint*1.0e-9, SS, MAPL_GRAV, t, airdens,rh2, u, v, & delp, ple, tropp,SSSMASS, SSCMASS, SSMASS, SSEXTTAU,SSSTEXTTAU, SSSCATAU,SSSTSCATAU, & SSSMASS25, SSCMASS25, SSMASS25, SSEXTT25, SSSCAT25, & - SSFLUXU, SSFLUXV, SSCONC, SSEXTCOEF, SSSCACOEF, & + SSFLUXU, SSFLUXV, SSCONC, SSEXTCOEF, SSSCACOEF, SSBCKCOEF, & SSEXTTFM, SSSCATFM ,SSANGSTR, SSAERIDX, NO3nFlag=.false.,__RC__) i1 = lbound(RH2, 1); i2 = ubound(RH2, 1) diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc index 6fe202fd..d0d00e27 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc @@ -50,6 +50,7 @@ category: EXPORT SSSCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Sea Salt Scattering Coefficient SSSCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Sea Salt Scattering Coefficient - Fixed RH=20% SSSCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | Sea Salt Scattering Coefficient - Fixed RH=80% + SSBCKCOEF | m-1 sr-1 | xyz | C | size(self%wavelengths_profile) | Sea Salt Backscatter Coefficient #............. | ............ | ..... | ..... | ............ | .................................. SSEM | kg m-2 s-1 | xy | N | self%nbins | Sea Salt Emission (Bin %d) SSSD | kg m-2 s-1 | xy | N | self%nbins | Sea Salt Sedimentation (Bin %d) diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 index 37dac4fd..498b8fd4 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90 @@ -1093,7 +1093,7 @@ subroutine Run2 (GC, import, export, clock, RC) SO2SMASS, SO2CMASS, & SO4SMASS, SO4CMASS, & SUEXTTAU, SUSTEXTTAU,SUSCATAU,SUSTSCATAU, SO4MASS, SUCONC, SUEXTCOEF, & - SUSCACOEF, SUANGSTR, SUFLUXU, SUFLUXV, SO4SAREA, SO4SNUM, __RC__) + SUSCACOEF, SUBCKCOEF,SUANGSTR, SUFLUXU, SUFLUXV, SO4SAREA, SO4SNUM, __RC__) i1 = lbound(RH2, 1); i2 = ubound(RH2, 1) j1 = lbound(RH2, 2); j2 = ubound(RH2, 2) diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc index 10aa5531..a372c092 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc @@ -90,6 +90,7 @@ category: EXPORT SUSCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | SO4 Scattering Coefficient SUSCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | SO4 Scattering Coefficient - Fixed RH=20% SUSCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | SO4 Scattering Coefficient - Fixed RH=80% + SUBCKCOEF | m-1 sr-1 | xyz | C | size(self%wavelengths_profile) | SO4 Backscatter Coefficient SUANGSTR | 1 | xy | N | | SO4 Angstrom parameter [470-870 nm] SUFLUXU | kg m-1 s-1 | xy | N | | SO4 column u-wind mass flux SUFLUXV | kg m-1 s-1 | xy | N | | SO4 column v-wind mass flux From 032f348cd26b94d3630775f4f56b7adaa082ece0 Mon Sep 17 00:00:00 2001 From: vbuchard Date: Mon, 7 Nov 2022 17:05:17 -0500 Subject: [PATCH 14/28] added TOTABCKSFC at 532nm --- CHANGELOG.md | 5 ++- .../GOCART2G_GridCompMod.F90 | 40 ++++++++++++++----- ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc | 3 +- Process_Library/GOCART2G_Process.F90 | 33 +++++++++++---- 4 files changed, 60 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8feb6abb..7cb008d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Extinction exports with RH=20% and RH=80% +- Extinction/Scattering profile exports at model RH at wavelengths_profile +- Extinction/Scattering profile exports with RH=20% and RH=80% at wavelengths_profile +- Aerosol single scattering backscatter coefficient for each instances and total at wavelengths_profile +- Total (molecular + aerosols) attenuated backscatter coefficient from TOA and sfc at 532nm ### Fixed diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 index 76e258b1..d1108e0b 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 @@ -635,7 +635,6 @@ subroutine Run2 (GC, import, export, clock, RC) real, pointer, dimension(:,:,:,:) :: brbckcoef real, pointer, dimension(:,:) :: brangstr, brsmass real, pointer, dimension(:,:,:) :: pso4 - real, allocatable :: aerabcktoa(:,:,:), molabcktoa(:,:,:) real, allocatable :: tau1(:,:), tau2(:,:) real, allocatable :: backscat_mol(:,:,:) real, allocatable :: P(:,:,:), delz(:,:,:) @@ -692,6 +691,7 @@ subroutine Run2 (GC, import, export, clock, RC) if(associated(totscacoefrh80)) totscacoefrh80 = 0. if(associated(totbckcoef)) totbckcoef = 0. if(associated(totabcktoa)) totabcktoa = 0. + if(associated(totabcksfc)) totabcksfc = 0. if(associated(pm)) pm(:,:) = 0. if(associated(pm25)) pm25(:,:) = 0. if(associated(pm_rh35)) pm_rh35(:,:) = 0. @@ -1141,7 +1141,13 @@ subroutine Run2 (GC, import, export, clock, RC) end if ! Calculate the total (molecular + aer) single scattering attenuated backscater coef from the TOA - if(associated(totabcktoa) .and. associated(totextcoef) .and. associated(totbckcoef)) then + if(associated(totabcktoa).or.associated(totabcksfc)) then + if (.not.associated(totextcoef) .and. .not. associated(totbckcoef)) then + print*,trim(Iam),' : TOTEXTCOEF and TOTBCKCOEF and their children needs to be requested in HISTORY.rc.',& + ' Cannot produce TOTABCKTOA or TOTABCKSFC variables without these exports.' + VERIFY_(100) + endif + ind532 = 0 do w = 1, size(self%wavelengths_profile) ! find index for 532nm to compute TBA if ((self%wavelengths_profile(w)*1.e-9 .ge. 5.31e-7) .and. & @@ -1171,7 +1177,7 @@ subroutine Run2 (GC, import, export, clock, RC) !molecular backscattering cross section for each layer at 532nm: Cair * P(Pa) / T(K) !Cair = 4.51944e-9 at 532nm # unit K Pa-1 m-1 sr-1 http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19960051003.pdf allocate(backscat_mol(i1:i2,j1:j2,km), __STAT__) - backscat_mol = 5.45e-32/1.380648e-23 * (532./550.)**(-4.0) * P / T + backscat_mol = (5.45e-32/1.380648e-23) * (532./550.)**(-4.0) * P / T ! tau mol for each layer allocate(tau_mol_layer(i1:i2,j1:j2,km), delz(i1:i2,j1:j2,km),__STAT__) delz = delp / (MAPL_GRAV * airdens) @@ -1181,16 +1187,13 @@ subroutine Run2 (GC, import, export, clock, RC) allocate(tau_aer_layer(i1:i2,j1:j2,km), __STAT__) tau_aer_layer = totextcoef(:,:,:,ind532) * delz - allocate(molabcktoa(i1:i2,j1:j2,km), __STAT__) - allocate(aerabcktoa(i1:i2,j1:j2,km), __STAT__) - allocate(tau_aer(i1:i2,j1:j2), __STAT__) allocate(tau_mol(i1:i2,j1:j2), __STAT__) + + ! TOTAL ABCK TOA ! top layer totabcktoa(:,:,1) = (totbckcoef(:,:,1,ind532) + backscat_mol(:,:,1)) * exp(-tau_aer_layer(:,:,1)) * exp(-tau_mol_layer(:,:,1)) - aerabcktoa(:,:,1) = totbckcoef(:,:,1,ind532) * exp(-tau_aer_layer(:,:,1)) - molabcktoa(:,:,1) = backscat_mol(:,:,1) * exp(-tau_mol_layer(:,:,1)) - ! layer 2 to the layer at the surface(km-1) + ! layer 2 to the layer at the surface(km) do k = 2, km tau_aer = 0. tau_mol = 0. ! for each layer @@ -1201,9 +1204,24 @@ subroutine Run2 (GC, import, export, clock, RC) tau_aer = tau_aer + 0.5 * tau_aer_layer(:,:,k) tau_mol = tau_mol + 0.5 * tau_mol_layer(:,:,k) totabcktoa(:,:,k) = (totbckcoef(:,:,k,ind532) + backscat_mol(:,:,k)) * exp(-tau_aer) * exp(-tau_mol) - aerabcktoa(:,:,k) = totbckcoef(:,:,k,ind532) * exp(-2*tau_aer) - molabcktoa(:,:,k) = backscat_mol(:,:,k) * exp(-2*tau_mol) enddo + + ! TOTAL ABCK SFC + ! bottom layer + totabcksfc(:,:,km) = (totbckcoef(:,:,km,ind532) + backscat_mol(:,:,km)) * exp(-tau_aer_layer(:,:,km)) * exp(-tau_mol_layer(:,:,km)) + ! layer 2nd from the surface to the top of the atmoshere (km) + do k = km-1, 1, -1 + tau_aer = 0. + tau_mol = 0. ! for each layer + do kk = km, k+1, -1 + tau_aer = tau_aer + tau_aer_layer(:,:,kk) + tau_mol = tau_mol + tau_mol_layer(:,:,kk) + enddo + tau_aer = tau_aer + 0.5 * tau_aer_layer(:,:,k) + tau_mol = tau_mol + 0.5 * tau_mol_layer(:,:,k) + totabcksfc(:,:,k) = (totbckcoef(:,:,k,ind532) + backscat_mol(:,:,k)) * exp(-tau_aer) * exp(-tau_mol) + enddo + endif ! end of total attenuated backscatter coef calculation RETURN_(ESMF_SUCCESS) diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc index 710b82be..ba8ca591 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc @@ -37,7 +37,8 @@ category: EXPORT TOTSCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Scattering coefficient - Fixed RH=20% TOTSCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Scattering coefficient - Fixed RH=80% TOTBCKCOEF | m-1 sr-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Single Scattering Backscatter coefficient - TOTABCKTOA | m-1 sr-1 | xyz | C | | Total Attenuated Backscatter Coefficient [532nm] + TOTABCKTOA | m-1 sr-1 | xyz | C | | Total Attenuated Backscatter Coefficient from TOA [532nm] + TOTABCKSFC | m-1 sr-1 | xyz | C | | Total Attenuated Backscatter Coefficient from surface [532nm] PM | kg m-3 | xy | N | | Total reconstructed PM PM_RH35 | kg m-3 | xy | N | | Total reconstructed PM(RH=35%) PM_RH50 | kg m-3 | xy | N | | Total reconstructed PM(RH=50%) diff --git a/Process_Library/GOCART2G_Process.F90 b/Process_Library/GOCART2G_Process.F90 index 8b985ccc..06106068 100644 --- a/Process_Library/GOCART2G_Process.F90 +++ b/Process_Library/GOCART2G_Process.F90 @@ -3249,7 +3249,7 @@ subroutine Aero_Compute_Diags (mie, km, klid, nbegin, nbins, rlow, rup, & grav, tmpu, rhoa, rh, u, v, delp, ple,tropp, & sfcmass, colmass, mass, exttau, stexttau, scatau, stscatau,& sfcmass25, colmass25, mass25, exttau25, scatau25, & - fluxu, fluxv, conc, extcoef, scacoef, & + fluxu, fluxv, conc, extcoef, scacoef, bckcoef,& exttaufm, scataufm, angstrom, aerindx, NO3nFlag, rc ) ! !USES: @@ -3297,6 +3297,7 @@ subroutine Aero_Compute_Diags (mie, km, klid, nbegin, nbins, rlow, rup, & real, optional, dimension(:,:), intent(inout) :: fluxv ! Column mass flux in y direction real, optional, dimension(:,:,:,:), intent(inout) :: extcoef ! 3d ext. coefficient, 1/m real, optional, dimension(:,:,:,:), intent(inout) :: scacoef ! 3d scat.coefficient, 1/m + real, optional, dimension(:,:,:,:), intent(inout) :: bckcoef ! 3d backscatter coefficient, m-1 sr-1 real, optional, dimension(:,:,:), intent(inout) :: exttaufm ! fine mode (sub-micron) ext. AOT at 550 nm real, optional, dimension(:,:,:), intent(inout) :: scataufm ! fine mode (sub-micron) sct. AOT at 550 nm real, optional, dimension(:,:), intent(inout) :: angstrom ! 470-870 nm Angstrom parameter @@ -3317,7 +3318,7 @@ subroutine Aero_Compute_Diags (mie, km, klid, nbegin, nbins, rlow, rup, & integer :: i, j, k, n, w, ios, status integer :: i1 =1, i2, j1=1, j2 integer :: ilam470, ilam870 - real, allocatable, dimension(:,:,:) :: tau, ssa + real, allocatable, dimension(:,:,:) :: tau, ssa, bck ! real :: fPMfm(nbins) ! fraction of bin with particles diameter < 1.0 um ! real :: fPM25(nbins) ! fraction of bin with particles diameter < 2.5 um real, dimension(:), allocatable :: fPMfm ! fraction of bin with particles diameter < 1.0 um @@ -3470,18 +3471,21 @@ subroutine Aero_Compute_Diags (mie, km, klid, nbegin, nbins, rlow, rup, & allocate(tau(i1:i2,j1:j2,km),source = 0.) allocate(ssa(i1:i2,j1:j2,km),source = 0.) + allocate(bck(i1:i2,j1:j2,km),source = 0.) ! Calculate the extinction and/or scattering AOD if( present(extcoef) .or. & - present(scacoef) ) then + present(scacoef) .or. & + present(bckcoef)) then if( present(extcoef) ) extcoef = 0. if( present(scacoef) ) scacoef = 0. + if( present(bckcoef) ) bckcoef = 0. do n = nbegin, nbins do w = 1, size(wavelengths_profile) call mie%Query(wavelengths_profile(w),n, & aerosol(:,:,:,n)*delp/grav, & - rh, tau=tau, ssa=ssa, __RC__) + rh, tau=tau, ssa=ssa, bbck=bck,__RC__) ! Calculate the total ext. and scat. coefficients if ( present(extcoef) ) then extcoef(:,:,:,w) = extcoef(:,:,:,w) + & @@ -3491,6 +3495,11 @@ subroutine Aero_Compute_Diags (mie, km, klid, nbegin, nbins, rlow, rup, & scacoef(:,:,:,w) = scacoef(:,:,:,w) + & ssa * tau * (grav * rhoa / delp) endif + !calculate the backscatter coefficient + if ( present(bckcoef) ) then + bckcoef(:,:,:,w) = bckcoef(:,:,:,w) + & + bck * aerosol(:,:,:,n)*rhoa + endif enddo !wavelengths_profile enddo !nbins end if !present(extcoef)... @@ -6689,7 +6698,7 @@ subroutine SU_Compute_Diags ( km, klid, rmed, sigma, rhop, grav, pi, nSO4, mie, so2sfcmass, so2colmass, & so4sfcmass, so4colmass, & exttau, stexttau,scatau, stscatau,so4mass, so4conc, extcoef, & - scacoef, angstrom, fluxu, fluxv, sarea, snum, rc ) + scacoef, bckcoef, angstrom, fluxu, fluxv, sarea, snum, rc ) ! !USES: implicit NONE @@ -6736,6 +6745,7 @@ subroutine SU_Compute_Diags ( km, klid, rmed, sigma, rhop, grav, pi, nSO4, mie, real, optional, dimension(:,:,:), intent(inout) :: so4conc ! 3D mass concentration, [kg/m3] real, optional, dimension(:,:,:,:), intent(inout) :: extcoef ! 3D ext. coefficient, [1/m] real, optional, dimension(:,:,:,:), intent(inout) :: scacoef ! 3D scat.coefficient, [1/m] + real, optional, dimension(:,:,:,:), intent(inout) :: bckcoef ! 3D backscatter coefficient, [m-1 sr-1] real, optional, dimension(:,:), intent(inout) :: angstrom ! 470-870 nm Angstrom parameter real, optional, dimension(:,:), intent(inout) :: fluxu ! Column mass flux in x direction real, optional, dimension(:,:), intent(inout) :: fluxv ! Column mass flux in y direction @@ -6755,7 +6765,7 @@ subroutine SU_Compute_Diags ( km, klid, rmed, sigma, rhop, grav, pi, nSO4, mie, ! !Local Variables integer :: i, j, k, w, i1=1, j1=1, i2, j2, status - real, dimension(:,:,:), allocatable :: tau, ssa + real, dimension(:,:,:), allocatable :: tau, ssa, bck real, dimension(:,:), allocatable :: tau470, tau870 integer :: ilam470, ilam870 logical :: do_angstrom @@ -6888,15 +6898,18 @@ subroutine SU_Compute_Diags ( km, klid, rmed, sigma, rhop, grav, pi, nSO4, mie, ! Calculate the extinction and/or scattering AOD allocate(tau(i1:i2,j1:j2,km), source = 0.) allocate(ssa(i1:i2,j1:j2,km), source = 0.) - if( present(extcoef) .or. present(scacoef) ) then + allocate(bck(i1:i2,j1:j2,km), source = 0.) + if( present(extcoef) .or. present(scacoef) .or. & + present(bckcoef)) then if (present(extcoef)) extcoef = 0. if (present(scacoef)) scacoef = 0. + if (present(bckcoef)) bckcoef = 0. do w = 1, size(wavelengths_profile) call mie%Query(wavelengths_profile(w), 1, & ! Only SO4 exists in the MieTable, so its index is 1 SO4*delp/grav, rh, & - tau=tau, ssa=ssa, __RC__) + tau=tau, ssa=ssa, bbck=bck,__RC__) ! Calculate the total ext. and scat. coefficients if( present(extcoef) ) then @@ -6907,6 +6920,10 @@ subroutine SU_Compute_Diags ( km, klid, rmed, sigma, rhop, grav, pi, nSO4, mie, scacoef(:,:,:,w) = scacoef(:,:,:,w) + & ssa * tau * (grav * rhoa / delp) endif + if( present(bckcoef) ) then + bckcoef(:,:,:,w) = bckcoef(:,:,:,w) + & + bck * SO4 * rhoa + endif enddo endif From 2fa2a4df3aee76a46c3b6422afc9ea7c3c2d2f98 Mon Sep 17 00:00:00 2001 From: vbuchard Date: Tue, 29 Nov 2022 15:23:56 -0500 Subject: [PATCH 15/28] update of QFED paths, remove of links, update of climatology paths --- .../AMIP.20C/CA2G_GridComp_ExtData.rc | 32 +++++----- .../AMIP/CA2G_GridComp_ExtData.rc | 36 ++++++------ .../AMIP/CA2G_GridComp_ExtData.yaml | 52 ++++++++--------- .../CA2G_GridComp/CA2G_GridComp_ExtData.rc | 36 ++++++------ .../CA2G_GridComp/CA2G_GridComp_ExtData.yaml | 48 +++++++-------- .../AMIP/DU2G_GridComp_ExtData.yaml | 58 +++++++++---------- .../DU2G_GridComp/DU2G_GridComp_ExtData.rc | 58 +++++++++---------- .../DU2G_GridComp/DU2G_GridComp_ExtData.yaml | 58 +++++++++---------- .../AMIP/NI2G_GridComp_ExtData.rc | 2 +- .../AMIP/NI2G_GridComp_ExtData.yaml | 6 +- .../NI2G_GridComp/NI2G_GridComp_ExtData.rc | 2 +- .../NI2G_GridComp/NI2G_GridComp_ExtData.yaml | 4 +- .../AMIP/SS2G_GridComp_ExtData.yaml | 58 +++++++++---------- .../SS2G_GridComp/SS2G_GridComp_ExtData.rc | 50 ++++++++-------- .../SS2G_GridComp/SS2G_GridComp_ExtData.yaml | 58 +++++++++---------- .../AMIP.20C/SU2G_GridComp_ExtData.rc | 26 ++++----- .../AMIP/SU2G_GridComp_ExtData.rc | 28 ++++----- .../AMIP/SU2G_GridComp_ExtData.yaml | 40 ++++++------- .../SU2G_GridComp/SU2G_GridComp_ExtData.rc | 28 ++++----- .../SU2G_GridComp/SU2G_GridComp_ExtData.yaml | 38 ++++++------ .../CO_GridComp/AMIP/CO_GridComp_ExtData.rc | 2 +- .../CO_GridComp/AMIP/CO_GridComp_ExtData.yaml | 6 +- .../CO_GridComp/CO_GridComp_ExtData.rc | 2 +- .../CO_GridComp/CO_GridComp_ExtData.yaml | 6 +- 24 files changed, 367 insertions(+), 367 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP.20C/CA2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP.20C/CA2G_GridComp_ExtData.rc index 6470a20c..14ff068e 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP.20C/CA2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP.20C/CA2G_GridComp_ExtData.rc @@ -6,30 +6,30 @@ PrimaryExports%% #========== Data Instance ========================================================== -climBCphobic 'kg kg-1' Y N 0 0.0 1.0 BCphobic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climBCphilic 'kg kg-1' Y N 0 0.0 1.0 BCphilic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climOCphobic 'kg kg-1' Y N 0 0.0 1.0 OCphobic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climOCphilic 'kg kg-1' Y N 0 0.0 1.0 OCphilic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 +climBCphobic 'kg kg-1' Y N 0 0.0 1.0 BCphobic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climBCphilic 'kg kg-1' Y N 0 0.0 1.0 BCphilic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climOCphobic 'kg kg-1' Y N 0 0.0 1.0 OCphobic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climOCphilic 'kg kg-1' Y N 0 0.0 1.0 OCphilic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 -climBCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climBCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climBCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climBCSD001 'kg m-2 s-1' Y N 0 0.0 1.0 BCSD001 /dev/null -climBCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climBCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climBCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climBCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climBCSD002 'kg m-2 s-1' Y N 0 0.0 1.0 BCSD002 /dev/null -climBCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climOCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climOCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climOCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climOCSD001 'kg m-2 s-1' Y N 0 0.0 1.0 OCSD001 /dev/null -climOCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climOCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climOCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climOCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climOCSD002 'kg m-2 s-1' Y N 0 0.0 1.0 OCSD002 /dev/null -climOCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 #=========== Carbonaceous aerosol sources =========================================== diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP/CA2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP/CA2G_GridComp_ExtData.rc index 604755e8..9c8fabe2 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP/CA2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP/CA2G_GridComp_ExtData.rc @@ -6,30 +6,30 @@ PrimaryExports%% #========== Data Instance ========================================================== -climBCphobic 'kg kg-1' Y N 0 0.0 1.0 BCphobic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climBCphilic 'kg kg-1' Y N 0 0.0 1.0 BCphilic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climOCphobic 'kg kg-1' Y N 0 0.0 1.0 OCphobic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climOCphilic 'kg kg-1' Y N 0 0.0 1.0 OCphilic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 +climBCphobic 'kg kg-1' Y N 0 0.0 1.0 BCphobic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climBCphilic 'kg kg-1' Y N 0 0.0 1.0 BCphilic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climOCphobic 'kg kg-1' Y N 0 0.0 1.0 OCphobic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climOCphilic 'kg kg-1' Y N 0 0.0 1.0 OCphilic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 -climBCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climBCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climBCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climBCSD001 'kg m-2 s-1' Y N 0 0.0 1.0 BCSD001 /dev/null -climBCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climBCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climBCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climBCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climBCSD002 'kg m-2 s-1' Y N 0 0.0 1.0 BCSD002 /dev/null -climBCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climOCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climOCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climOCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climOCSD001 'kg m-2 s-1' Y N 0 0.0 1.0 OCSD001 /dev/null -climOCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climOCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climOCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climOCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climOCSD002 'kg m-2 s-1' Y N 0 0.0 1.0 OCSD002 /dev/null -climOCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 #=========== Carbonaceous aerosol sources =========================================== @@ -63,7 +63,7 @@ pSOA_ANTHRO_VOC NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null # BLACK CARBON # ------------ # QFED v2.x -BC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.006.%y4%m2%d2.nc4 +BC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.061.%y4%m2%d2.nc4 # Biofuel Source -- Included in AeroCom anthropogenic emissions BC_BIOFUEL NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null @@ -87,7 +87,7 @@ BC_AVIATION_CRS NA Y Y %y4-%m2-%d2t12:00:00 none none bc_aviation /dev/null # BROWN CARBON # ------------ # Biomass burning -- QFED-v2.x -BRC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.006.%y4%m2%d2.nc4 +BRC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.061.%y4%m2%d2.nc4 # Terpene emission BRC_TERPENE NA Y Y %y4-%m2-%d2t12:00:00 none none terpene /dev/null diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP/CA2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP/CA2G_GridComp_ExtData.yaml index b36d56c6..4813b4d1 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP/CA2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP/CA2G_GridComp_ExtData.yaml @@ -15,15 +15,15 @@ Collections: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/OC-em-anthro_CMIP_CEDS_gn_nonenergy.x2304_y1441_t12.%y4.nc4 CA2G_OC-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/OC-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4 - CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 - CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 - CA2G_qfed2.emis_bc.006.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.006.%y4%m2%d2.nc4 + CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 + CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 + CA2G_qfed2.emis_bc.061.%y4%m2%d2.nc4: + template: ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.061.%y4%m2%d2.nc4 valid_range: "2000-02-29T12:00/2025-01-01" - CA2G_qfed2.emis_oc.006.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.006.%y4%m2%d2.nc4 + CA2G_qfed2.emis_oc.061.%y4%m2%d2.nc4: + template: ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.061.%y4%m2%d2.nc4 valid_range: "2000-02-29T12:00/2025-01-01" CA2G_hfed.emis_bc.x576_y361.%y4%m2.nc4: template: ExtData/chemistry/HFED/v1.0/Y%y4/M%m2/hfed.emis_bc.x576_y361.%y4%m2.nc4 @@ -83,7 +83,7 @@ Exports: variable: biofuel BC_BIOMASS: - {starting: "1960-01-16T12:00", collection: CA2G_hfed.emis_bc.x576_y361.%y4%m2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: CA2G_sample_1, variable: biomass} - - {starting: "2000-03-01T00:00", collection: CA2G_qfed2.emis_bc.006.%y4%m2%d2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: CA2G_sample_1, variable: biomass} + - {starting: "2000-03-01T00:00", collection: CA2G_qfed2.emis_bc.061.%y4%m2%d2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: CA2G_sample_1, variable: biomass} BC_SHIP: collection: CA2G_BC-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4 regrid: CONSERVE @@ -126,7 +126,7 @@ Exports: variable: biofuel BRC_BIOMASS: - {starting: "1960-01-16T12:00", collection: CA2G_hfed.emis_oc.x576_y361.%y4%m2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: CA2G_sample_1, variable: biomass} - - {starting: "2000-03-01T00:00", collection: CA2G_qfed2.emis_oc.006.%y4%m2%d2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: CA2G_sample_1, variable: biomass} + - {starting: "2000-03-01T00:00", collection: CA2G_qfed2.emis_oc.061.%y4%m2%d2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: CA2G_sample_1, variable: biomass} BRC_SHIP: collection: /dev/null regrid: CONSERVE @@ -186,11 +186,11 @@ Exports: sample: CA2G_sample_1 variable: oc_shipping climBCDP001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCDP001 climBCDP002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCDP002 climBCSD001: @@ -202,35 +202,35 @@ Exports: sample: CA2G_sample_0 variable: BCSD002 climBCSV001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCSV001 climBCSV002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCSV002 climBCWT001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCWT001 climBCWT002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCWT002 climBCphilic: - collection: CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCphilic climBCphobic: - collection: CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCphobic climOCDP001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCDP001 climOCDP002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCDP002 climOCSD001: @@ -242,27 +242,27 @@ Exports: sample: CA2G_sample_0 variable: OCSD002 climOCSV001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCSV001 climOCSV002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCSV002 climOCWT001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCWT001 climOCWT002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCWT002 climOCphilic: - collection: CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCphilic climOCphobic: - collection: CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCphobic pSOA_ANTHRO_VOC: diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridComp_ExtData.rc index 70f36e88..972bddf1 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridComp_ExtData.rc @@ -6,30 +6,30 @@ PrimaryExports%% #========== Data Instance ========================================================== -climBCphobic 'kg kg-1' Y N 0 0.0 1.0 BCphobic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climBCphilic 'kg kg-1' Y N 0 0.0 1.0 BCphilic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climOCphobic 'kg kg-1' Y N 0 0.0 1.0 OCphobic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climOCphilic 'kg kg-1' Y N 0 0.0 1.0 OCphilic ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 +climBCphobic 'kg kg-1' Y N 0 0.0 1.0 BCphobic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climBCphilic 'kg kg-1' Y N 0 0.0 1.0 BCphilic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climOCphobic 'kg kg-1' Y N 0 0.0 1.0 OCphobic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climOCphilic 'kg kg-1' Y N 0 0.0 1.0 OCphilic ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 -climBCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climBCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climBCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climBCSD001 'kg m-2 s-1' Y N 0 0.0 1.0 BCSD001 /dev/null -climBCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climBCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climBCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 BCDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climBCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 BCWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climBCSD002 'kg m-2 s-1' Y N 0 0.0 1.0 BCSD002 /dev/null -climBCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climBCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 BCSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climOCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climOCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCDP001 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climOCWT001 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climOCSD001 'kg m-2 s-1' Y N 0 0.0 1.0 OCSD001 /dev/null -climOCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCSV001 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climOCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climOCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCDP002 'kg m-2 s-1' Y N 0 0.0 1.0 OCDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climOCWT002 'kg m-2 s-1' Y N 0 0.0 1.0 OCWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climOCSD002 'kg m-2 s-1' Y N 0 0.0 1.0 OCSD002 /dev/null -climOCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climOCSV002 'kg m-2 s-1' Y N 0 0.0 1.0 OCSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 #=========== Carbonaceous aerosol sources =========================================== @@ -63,7 +63,7 @@ pSOA_ANTHRO_VOC NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null # BLACK CARBON # ------------ # QFED v2.x -BC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.006.%y4%m2%d2.nc4 +BC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.006.%y4%m2%d2.nc4 # Biofuel Source -- Included in AeroCom anthropogenic emissions BC_BIOFUEL NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null @@ -87,7 +87,7 @@ BC_AVIATION_CRS NA Y Y %y4-%m2-%d2t12:00:00 none none bc_aviation /dev/null # BROWN CARBON # ------------ # Biomass burning -- QFED-v2.x -BRC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.006.%y4%m2%d2.nc4 +BRC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.006.%y4%m2%d2.nc4 # Terpene emission BRC_TERPENE NA Y Y %y4-%m2-%d2t12:00:00 none none terpene /dev/null diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridComp_ExtData.yaml index 67976db8..0ee57bb4 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridComp_ExtData.yaml @@ -15,21 +15,21 @@ Collections: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/OC-em-anthro_CMIP_CEDS_gn_nonenergy.x2304_y1441_t12.%y4.nc4 CA2G_OC-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/OC-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4 - CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 - CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 + CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 CA2G_qfed2.emis_bc.006.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.006.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.006.%y4%m2%d2.nc4 valid_range: "2014-12-01T12:00/2021-11-01T12:00" CA2G_qfed2.emis_oc.006.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.006.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.006.%y4%m2%d2.nc4 valid_range: "2014-12-01T12:00/2021-11-01T12:00" CA2G_qfed2.emis_bc.061.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.061.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_bc.061.%y4%m2%d2.nc4 valid_range: "2021-11-01T12:00/2025-01-01" CA2G_qfed2.emis_oc.061.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.061.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_oc.061.%y4%m2%d2.nc4 valid_range: "2021-11-01T12:00/2025-01-01" Samplings: @@ -186,11 +186,11 @@ Exports: sample: CA2G_sample_1 variable: oc_shipping climBCDP001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCDP001 climBCDP002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCDP002 climBCSD001: @@ -202,35 +202,35 @@ Exports: sample: CA2G_sample_0 variable: BCSD002 climBCSV001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCSV001 climBCSV002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCSV002 climBCWT001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCWT001 climBCWT002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCWT002 climBCphilic: - collection: CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCphilic climBCphobic: - collection: CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: BCphobic climOCDP001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCDP001 climOCDP002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCDP002 climOCSD001: @@ -242,27 +242,27 @@ Exports: sample: CA2G_sample_0 variable: OCSD002 climOCSV001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCSV001 climOCSV002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCSV002 climOCWT001: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCWT001 climOCWT002: - collection: CA2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCWT002 climOCphilic: - collection: CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCphilic climOCphobic: - collection: CA2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: CA2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: CA2G_sample_0 variable: OCphobic pSOA_ANTHRO_VOC: diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/AMIP/DU2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/DU2G_GridComp/AMIP/DU2G_GridComp_ExtData.yaml index c5d0b3f0..a851a547 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/AMIP/DU2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/AMIP/DU2G_GridComp_ExtData.yaml @@ -5,10 +5,10 @@ Collections: template: ExtData/chemistry/DUST/v0.0.0/sfc/_gldas-fao.soil_texture.x1152_y721_t1.nc4 DU2G_arlems-roughness.x1151_y720_t1.nc4: template: ExtData/chemistry/DUST/v0.0.0/sfc/arlems-roughness.x1151_y720_t1.nc4 - DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 - DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 + DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 DU2G_gocart.dust_source.v5a.x1152_y721.nc: template: ExtData/chemistry/DUST/v0.0.0/sfc/gocart.dust_source.v5a.x1152_y721.nc DU2G_qvi.006.%y4.nc4: @@ -68,103 +68,103 @@ Exports: sample: DU2G_sample_0 variable: roughness climDUDP001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP001 climDUDP002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP002 climDUDP003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP003 climDUDP004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP004 climDUDP005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP005 climDUSD001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD001 climDUSD002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD002 climDUSD003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD003 climDUSD004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD004 climDUSD005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD005 climDUSV001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV001 climDUSV002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV002 climDUSV003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV003 climDUSV004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV004 climDUSV005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV005 climDUWT001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT001 climDUWT002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT002 climDUWT003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT003 climDUWT004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT004 climDUWT005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT005 climdu001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du001 climdu002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du002 climdu003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du003 climdu004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du004 climdu005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du005 diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.rc index d563cf53..0a5e62ae 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.rc @@ -15,37 +15,37 @@ DU_Z0 NA N Y - none none roughness ExtData/chemistry/DUST/v0.0.0/sfc/a DU_GVF NA N Y %y4-%m2-%d2t12:00:00 none none gvf ExtData/chemistry/NDVI/v1.0.r3/sfc/qvi.006.%y4.nc4 # DU data - 3D -climdu001 'kg kg-1' Y N 0 0.0 1.0 du001 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climdu002 'kg kg-1' Y N 0 0.0 1.0 du002 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climdu003 'kg kg-1' Y N 0 0.0 1.0 du003 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climdu004 'kg kg-1' Y N 0 0.0 1.0 du004 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climdu005 'kg kg-1' Y N 0 0.0 1.0 du005 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 +climdu001 'kg kg-1' Y N 0 0.0 1.0 du001 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climdu002 'kg kg-1' Y N 0 0.0 1.0 du002 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climdu003 'kg kg-1' Y N 0 0.0 1.0 du003 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climdu004 'kg kg-1' Y N 0 0.0 1.0 du004 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climdu005 'kg kg-1' Y N 0 0.0 1.0 du005 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 # DU data - 2D -climDUDP001 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUWT001 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSD001 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSV001 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 - -climDUDP002 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUWT002 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSD002 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSV002 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 - -climDUDP003 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUWT003 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSD003 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSV003 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 - -climDUDP004 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUWT004 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSD004 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSV004 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 - -climDUDP005 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP005 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUWT005 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT005 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSD005 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD005 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climDUSV005 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV005 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climDUDP001 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUWT001 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSD001 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSV001 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 + +climDUDP002 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUWT002 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSD002 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSV002 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 + +climDUDP003 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUWT003 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSD003 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSV003 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 + +climDUDP004 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUWT004 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSD004 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSV004 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 + +climDUDP005 'kg m-2 s-1' Y N 0 0.0 1.0 DUDP005 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUWT005 'kg m-2 s-1' Y N 0 0.0 1.0 DUWT005 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSD005 'kg m-2 s-1' Y N 0 0.0 1.0 DUSD005 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climDUSV005 'kg m-2 s-1' Y N 0 0.0 1.0 DUSV005 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 %% diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.yaml index c5d0b3f0..a851a547 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.yaml @@ -5,10 +5,10 @@ Collections: template: ExtData/chemistry/DUST/v0.0.0/sfc/_gldas-fao.soil_texture.x1152_y721_t1.nc4 DU2G_arlems-roughness.x1151_y720_t1.nc4: template: ExtData/chemistry/DUST/v0.0.0/sfc/arlems-roughness.x1151_y720_t1.nc4 - DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 - DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 + DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 DU2G_gocart.dust_source.v5a.x1152_y721.nc: template: ExtData/chemistry/DUST/v0.0.0/sfc/gocart.dust_source.v5a.x1152_y721.nc DU2G_qvi.006.%y4.nc4: @@ -68,103 +68,103 @@ Exports: sample: DU2G_sample_0 variable: roughness climDUDP001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP001 climDUDP002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP002 climDUDP003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP003 climDUDP004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP004 climDUDP005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUDP005 climDUSD001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD001 climDUSD002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD002 climDUSD003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD003 climDUSD004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD004 climDUSD005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSD005 climDUSV001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV001 climDUSV002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV002 climDUSV003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV003 climDUSV004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV004 climDUSV005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUSV005 climDUWT001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT001 climDUWT002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT002 climDUWT003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT003 climDUWT004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT004 climDUWT005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: DUWT005 climdu001: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du001 climdu002: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du002 climdu003: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du003 climdu004: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du004 climdu005: - collection: DU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: DU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: DU2G_sample_2 variable: du005 diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP/NI2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP/NI2G_GridComp_ExtData.rc index 1f9d9774..de55d3c5 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP/NI2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP/NI2G_GridComp_ExtData.rc @@ -10,7 +10,7 @@ climNO3an2 'kg kg-1' N Y F0 none none NO3AN2 /discover/nobac climNO3an3 'kg kg-1' N Y F0 none none NO3AN3 /discover/nobackup/projects/gmao/gmao_ops/pub/fp/das/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst3_3d_aer_Nv.%y4%m2%d2_%h2%n2.V01.nc4 2017-02-01T00:00:00P03:00 # ======= Nitrate Sources ======== -EMI_NH3_BB 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.006.%y4%m2%d2.nc4 +EMI_NH3_BB 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.061.%y4%m2%d2.nc4 EMI_NH3_AG 'kg m-2 s-1' Y Y %y4-%m2-%d2T12:00:00 none none nh3_emis /dev/null EMI_NH3_EN 'kg m-2 s-1' N Y %y4-%m2-%d2t12:00:00 none none nh3 ExtData/chemistry/CEDS/v2021-04-21/sfc/NH3-em-anthro_CMIP_CEDS_gn.x2304_y1441_t12.%y4.nc4 EMI_NH3_IN 'kg m-2 s-1' Y Y %y4-%m2-%d2T12:00:00 none none nh3_emis /dev/null diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP/NI2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP/NI2G_GridComp_ExtData.yaml index dfc88b73..3018b116 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP/NI2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP/NI2G_GridComp_ExtData.yaml @@ -9,8 +9,8 @@ Collections: template: ExtData/chemistry/MERRA2GMI/v0.0.0/L72/MERRA2_GMI.tavg24_3d_dac_Nv.x576_y361_t12.%y4.nc4 NI2G_NH3-em-anthro_CMIP_CEDS_gn.x2304_y1441_t12.%y4.nc4: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/NH3-em-anthro_CMIP_CEDS_gn.x2304_y1441_t12.%y4.nc4 - NI2G_qfed2.emis_nh3.006.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.006.%y4%m2%d2.nc4 + NI2G_qfed2.emis_nh3.061.%y4%m2%d2.nc4: + template: ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.061.%y4%m2%d2.nc4 valid_range: "2000-02-29T12:00/2025-01-01" NI2G_hfed.emis_nh3.x576_y361.%y4%m2.nc4: template: ExtData/chemistry/HFED/v1.0/Y%y4/M%m2/hfed.emis_nh3.x576_y361.%y4%m2.nc4 @@ -39,7 +39,7 @@ Exports: variable: nh3_emis EMI_NH3_BB: - {starting: "1960-01-16T12:00", collection: NI2G_hfed.emis_nh3.x576_y361.%y4%m2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: NI2G_sample_1, variable: biomass} - - {starting: "2000-03-01T00:00", collection: NI2G_qfed2.emis_nh3.006.%y4%m2%d2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: NI2G_sample_1, variable: biomass} + - {starting: "2000-03-01T00:00", collection: NI2G_qfed2.emis_nh3.061.%y4%m2%d2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: NI2G_sample_1, variable: biomass} EMI_NH3_EN: collection: NI2G_NH3-em-anthro_CMIP_CEDS_gn.x2304_y1441_t12.%y4.nc4 regrid: CONSERVE diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridComp_ExtData.rc index 9ffed6ee..8a84b024 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridComp_ExtData.rc @@ -10,7 +10,7 @@ climNO3an2 'kg kg-1' N Y F0 none none NO3AN2 /discover/nobac climNO3an3 'kg kg-1' N Y F0 none none NO3AN3 /discover/nobackup/projects/gmao/gmao_ops/pub/fp/das/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst3_3d_aer_Nv.%y4%m2%d2_%h2%n2.V01.nc4 2017-02-01T00:00:00P03:00 # ======= Nitrate Sources ======== -EMI_NH3_BB 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none 0.778 biomass ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.006.%y4%m2%d2.nc4 +EMI_NH3_BB 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.006.%y4%m2%d2.nc4 EMI_NH3_AG 'kg m-2 s-1' Y Y %y4-%m2-%d2T12:00:00 none none nh3_emis /dev/null EMI_NH3_EN 'kg m-2 s-1' N Y %y4-%m2-%d2t12:00:00 none none nh3 ExtData/chemistry/CEDS/v2021-04-21/sfc/NH3-em-anthro_CMIP_CEDS_gn.x2304_y1441_t12.%y4.nc4 EMI_NH3_IN 'kg m-2 s-1' Y Y %y4-%m2-%d2T12:00:00 none none nh3_emis /dev/null diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridComp_ExtData.yaml index 14eebf64..97baa848 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridComp_ExtData.yaml @@ -10,10 +10,10 @@ Collections: NI2G_NH3-em-anthro_CMIP_CEDS_gn.x2304_y1441_t12.%y4.nc4: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/NH3-em-anthro_CMIP_CEDS_gn.x2304_y1441_t12.%y4.nc4 NI2G_qfed2.emis_nh3.006.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.006.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.006.%y4%m2%d2.nc4 valid_range: "2014-12-01T12:00/2021-11-01T12:00" NI2G_qfed2.emis_nh3.061.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.061.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_nh3.061.%y4%m2%d2.nc4 valid_range: "2021-11-01T12:00/2025-01-01" Samplings: diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/AMIP/SS2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/SS2G_GridComp/AMIP/SS2G_GridComp_ExtData.yaml index 82b49659..251e1063 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/AMIP/SS2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/AMIP/SS2G_GridComp_ExtData.yaml @@ -1,8 +1,8 @@ Collections: - SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 - SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 + SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 Samplings: SS2G_sample_0: @@ -10,103 +10,103 @@ Samplings: Exports: climSSDP001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP001 climSSDP002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP002 climSSDP003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP003 climSSDP004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP004 climSSDP005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP005 climSSSD001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD001 climSSSD002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD002 climSSSD003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD003 climSSSD004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD004 climSSSD005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD005 climSSSV001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV001 climSSSV002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV002 climSSSV003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV003 climSSSV004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV004 climSSSV005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV005 climSSWT001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT001 climSSWT002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT002 climSSWT003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT003 climSSWT004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT004 climSSWT005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT005 climss001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss001 climss002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss002 climss003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss003 climss004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss004 climss005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss005 diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridComp_ExtData.rc index 5f418288..94f1390f 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridComp_ExtData.rc @@ -5,40 +5,40 @@ PrimaryExports%% # -------------|-------|-------|--------|----------------------|--------|--------|-------------|----------| # SS.data - 3D -climss001 'kg kg-1' Y N 0 0.0 1.0 ss001 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climss002 'kg kg-1' Y N 0 0.0 1.0 ss002 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climss003 'kg kg-1' Y N 0 0.0 1.0 ss003 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climss004 'kg kg-1' Y N 0 0.0 1.0 ss004 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 -climss005 'kg kg-1' Y N 0 0.0 1.0 ss005 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 +climss001 'kg kg-1' Y N 0 0.0 1.0 ss001 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climss002 'kg kg-1' Y N 0 0.0 1.0 ss002 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climss003 'kg kg-1' Y N 0 0.0 1.0 ss003 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climss004 'kg kg-1' Y N 0 0.0 1.0 ss004 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 +climss005 'kg kg-1' Y N 0 0.0 1.0 ss005 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 # SS.data - 2D -climSSDP001 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSWT001 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSD001 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSV001 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSSDP001 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSWT001 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSD001 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSV001 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSSDP002 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSWT002 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSD002 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSV002 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSSDP002 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSWT002 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSD002 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSV002 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSSDP003 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSWT003 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSD003 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSV003 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSSDP003 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSWT003 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSD003 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSV003 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSSDP004 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSWT004 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSD004 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSV004 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSSDP004 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSWT004 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSD004 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSV004 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSSDP005 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP005 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSWT005 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT005 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSD005 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD005 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSSSV005 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV005 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSSDP005 'kg m-2 s-1' Y N 0 0.0 1.0 SSDP005 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSWT005 'kg m-2 s-1' Y N 0 0.0 1.0 SSWT005 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSD005 'kg m-2 s-1' Y N 0 0.0 1.0 SSSD005 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSSSV005 'kg m-2 s-1' Y N 0 0.0 1.0 SSSV005 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 %% diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridComp_ExtData.yaml index 82b49659..251e1063 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridComp_ExtData.yaml @@ -1,8 +1,8 @@ Collections: - SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 - SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 + SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 Samplings: SS2G_sample_0: @@ -10,103 +10,103 @@ Samplings: Exports: climSSDP001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP001 climSSDP002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP002 climSSDP003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP003 climSSDP004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP004 climSSDP005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSDP005 climSSSD001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD001 climSSSD002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD002 climSSSD003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD003 climSSSD004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD004 climSSSD005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSD005 climSSSV001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV001 climSSSV002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV002 climSSSV003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV003 climSSSV004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV004 climSSSV005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSSV005 climSSWT001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT001 climSSWT002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT002 climSSWT003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT003 climSSWT004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT004 climSSWT005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: SSWT005 climss001: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss001 climss002: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss002 climss003: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss003 climss004: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss004 climss005: - collection: SS2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SS2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SS2G_sample_0 variable: ss005 diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP.20C/SU2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP.20C/SU2G_GridComp_ExtData.rc index 68c6d773..400a635a 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP.20C/SU2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP.20C/SU2G_GridComp_ExtData.rc @@ -5,30 +5,30 @@ PrimaryExports%% # -------------|-------|-------|--------|----------------------|--------|--------|-------------|----------| #===== Sulfate Data Instance ========================================== -climSO4 'kg kg-1' Y N 0 0.0 1.0 SO4 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 +climSO4 'kg kg-1' Y N 0 0.0 1.0 SO4 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 #climDMS 'kg kg-1' Y N - 0.0 1.0 none /dev/null #climMSA 'kg kg-1' Y N - 0.0 1.0 none /dev/null #climSO2 'kg kg-1' Y N - 0.0 1.0 none /dev/null -climSUDP001 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT001 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP001 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT001 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD001 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD001 /dev/null -climSUSV001 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV001 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSUDP002 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT002 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP002 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT002 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD002 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD002 /dev/null -climSUSV002 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV002 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSUDP003 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT003 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP003 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT003 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD003 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD003 /dev/null -climSUSV003 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV003 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSUDP004 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT004 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP004 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT004 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD004 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD004 /dev/null -climSUSV004 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV004 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 #====== Sulfate Sources ================================================= diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP/SU2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP/SU2G_GridComp_ExtData.rc index 93d413d2..9bfe1831 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP/SU2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP/SU2G_GridComp_ExtData.rc @@ -5,35 +5,35 @@ PrimaryExports%% # -------------|-------|-------|--------|----------------------|--------|--------|-------------|----------| #===== Sulfate Data Instance ========================================== -climSO4 'kg kg-1' Y N 0 0.0 1.0 SO4 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 +climSO4 'kg kg-1' Y N 0 0.0 1.0 SO4 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 #climDMS 'kg kg-1' Y N - 0.0 1.0 none /dev/null #climMSA 'kg kg-1' Y N - 0.0 1.0 none /dev/null #climSO2 'kg kg-1' Y N - 0.0 1.0 none /dev/null -climSUDP001 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT001 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP001 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT001 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD001 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD001 /dev/null -climSUSV001 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV001 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSUDP002 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT002 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP002 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT002 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD002 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD002 /dev/null -climSUSV002 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV002 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSUDP003 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT003 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP003 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT003 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD003 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD003 /dev/null -climSUSV003 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV003 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSUDP004 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT004 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP004 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT004 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD004 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD004 /dev/null -climSUSV004 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV004 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 #====== Sulfate Sources ================================================= # Biomass burning -- QFED-v2.x -SU_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.006.%y4%m2%d2.nc4 +SU_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.061.%y4%m2%d2.nc4 # Anthropogenic (BF & FF) emissions -- allowed to input as two layers SU_ANTHROL1 NA N Y %y4-%m2-%d2t12:00:00 none none so2_nonenergy ExtData/chemistry/CEDS/v2021-04-21/sfc/SO2-em-anthro_CMIP_CEDS_gn_nonenergy.x2304_y1441_t12.%y4.nc4 diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP/SU2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP/SU2G_GridComp_ExtData.yaml index 5b1c29c3..0df14b74 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP/SU2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP/SU2G_GridComp_ExtData.yaml @@ -13,12 +13,12 @@ Collections: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/SO2-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4 SU2G_SO4-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/SO4-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4 - SU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 - SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 - SU2G_qfed2.emis_so2.006.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.006.%y4%m2%d2.nc4 + SU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 + SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 + SU2G_qfed2.emis_so2.061.%y4%m2%d2.nc4: + template: ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.061.%y4%m2%d2.nc4 valid_range: "2000-02-29T12:00/2025-01-01" SU2G_hfed.emis_so2.x576_y361.%y4%m2.nc4: template: ExtData/chemistry/HFED/v1.0/Y%y4/M%m2/hfed.emis_so2.x576_y361.%y4%m2.nc4 @@ -70,7 +70,7 @@ Exports: variable: so2_aviation SU_BIOMASS: - {starting: "1960-01-16T12:00", collection: SU2G_hfed.emis_so2.x576_y361.%y4%m2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: SU2G_sample_1, variable: biomass} - - {starting: "2000-03-01T00:00", collection: SU2G_qfed2.emis_so2.006.%y4%m2%d2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: SU2G_sample_1, variable: biomass} + - {starting: "2000-03-01T00:00", collection: SU2G_qfed2.emis_so2.061.%y4%m2%d2.nc4, linear_transformation: [0.0, 0.778], regrid: CONSERVE, sample: SU2G_sample_1, variable: biomass} SU_DMSO: collection: SU2G_DMSclim_sfcconcentration.x360_y181_t12.Lana2011.nc4 regrid: CONSERVE @@ -102,23 +102,23 @@ Exports: sample: SU2G_sample_1 variable: so4_shipping climSO4: - collection: SU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SO4 climSUDP001: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUDP001 climSUDP002: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUDP002 climSUDP003: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUDP003 climSUDP004: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUDP004 climSUSD001: @@ -138,35 +138,35 @@ Exports: sample: SU2G_sample_0 variable: SUSD004 climSUSV001: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUSV001 climSUSV002: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUSV002 climSUSV003: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUSV003 climSUSV004: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUSV004 climSUWT001: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUWT001 climSUWT002: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUWT002 climSUWT003: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUWT003 climSUWT004: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUWT004 pSO2_OCS: diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridComp_ExtData.rc b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridComp_ExtData.rc index 0e4394ad..cbcedb56 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridComp_ExtData.rc +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridComp_ExtData.rc @@ -5,35 +5,35 @@ PrimaryExports%% # -------------|-------|-------|--------|----------------------|--------|--------|-------------|----------| #===== Sulfate Data Instance ========================================== -climSO4 'kg kg-1' Y N 0 0.0 1.0 SO4 ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 +climSO4 'kg kg-1' Y N 0 0.0 1.0 SO4 ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 #climDMS 'kg kg-1' Y N - 0.0 1.0 none /dev/null #climMSA 'kg kg-1' Y N - 0.0 1.0 none /dev/null #climSO2 'kg kg-1' Y N - 0.0 1.0 none /dev/null -climSUDP001 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT001 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP001 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT001 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD001 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD001 /dev/null -climSUSV001 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV001 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV001 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV001 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSUDP002 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT002 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP002 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT002 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD002 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD002 /dev/null -climSUSV002 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV002 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV002 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV002 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSUDP003 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT003 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP003 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT003 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD003 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD003 /dev/null -climSUSV003 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV003 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV003 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV003 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 -climSUDP004 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 -climSUWT004 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUDP004 'kg m-2 s-1' Y N 0 0.0 1.0 SUDP004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 +climSUWT004 'kg m-2 s-1' Y N 0 0.0 1.0 SUWT004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 climSUSD004 'kg m-2 s-1' Y N 0 0.0 1.0 SUSD004 /dev/null -climSUSV004 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV004 ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 +climSUSV004 'kg m-2 s-1' Y N 0 0.0 1.0 SUSV004 ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 #====== Sulfate Sources ================================================= # Biomass burning -- QFED-v2.x -SU_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.006.%y4%m2%d2.nc4 +SU_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 0.778 biomass ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.006.%y4%m2%d2.nc4 # Anthropogenic (BF & FF) emissions -- allowed to input as two layers SU_ANTHROL1 NA N Y %y4-%m2-%d2t12:00:00 none none so2_nonenergy ExtData/chemistry/CEDS/v2021-04-21/sfc/SO2-em-anthro_CMIP_CEDS_gn_nonenergy.x2304_y1441_t12.%y4.nc4 diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridComp_ExtData.yaml b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridComp_ExtData.yaml index 3c7042c4..fcef1bf0 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridComp_ExtData.yaml +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridComp_ExtData.yaml @@ -13,15 +13,15 @@ Collections: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/SO2-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4 SU2G_SO4-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4: template: ExtData/chemistry/CEDS/v2021-04-21/sfc/SO4-em-anthro_CMIP_CEDS_gn_shipping.x2304_y1441_t12.%y4.nc4 - SU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/L72/dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 - SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4: - template: ExtData/chemistry/MERRAero/v0.0.0/sfc/dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + SU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/L72/merra2.aer_Nv.2003-2015.2008%m2clm.nc4 + SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4: + template: ExtData/chemistry/MERRA2/v0.0.0/sfc/merra2.aer_Nx.2003-2015.2008%m2clm.nc4 SU2G_qfed2.emis_so2.006.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.006.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.006.%y4%m2%d2.nc4 valid_range: "2014-12-01T12:00/2021-11-01T12:00" SU2G_qfed2.emis_so2.061.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/vNRT/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.061.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_so2.061.%y4%m2%d2.nc4 valid_range: "2021-11-01T12:00/2025-01-01" Samplings: @@ -102,23 +102,23 @@ Exports: sample: SU2G_sample_1 variable: so4_shipping climSO4: - collection: SU2G_dR_MERRA-AA-r2.aer_Nv.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nv.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SO4 climSUDP001: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUDP001 climSUDP002: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUDP002 climSUDP003: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUDP003 climSUDP004: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUDP004 climSUSD001: @@ -138,35 +138,35 @@ Exports: sample: SU2G_sample_0 variable: SUSD004 climSUSV001: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUSV001 climSUSV002: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUSV002 climSUSV003: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUSV003 climSUSV004: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUSV004 climSUWT001: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUWT001 climSUWT002: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUWT002 climSUWT003: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUWT003 climSUWT004: - collection: SU2G_dR_MERRA-AA-r2.aer_Nx.2003_2014.2008clm.nc4 + collection: SU2G_merra2.aer_Nx.2003-2015.2008%m2clm.nc4 sample: SU2G_sample_0 variable: SUWT004 pSO2_OCS: diff --git a/ESMF/GOCART_GridComp/CO_GridComp/AMIP/CO_GridComp_ExtData.rc b/ESMF/GOCART_GridComp/CO_GridComp/AMIP/CO_GridComp_ExtData.rc index 8c77dd76..f1748325 100755 --- a/ESMF/GOCART_GridComp/CO_GridComp/AMIP/CO_GridComp_ExtData.rc +++ b/ESMF/GOCART_GridComp/CO_GridComp/AMIP/CO_GridComp_ExtData.rc @@ -3,7 +3,7 @@ PrimaryExports%% # Import | | | Regrid | Refresh | OffSet | Scale | Variable On | File | # Name | Units | Clim | Method | Time Template | Factor | Factor | File | Template | # -------------|-------|-------|--------|----------------------|--------|--------|-------------|----------| -CO_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 1.11 biomass ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_co.006.%y4%m2%d2.nc4 +CO_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 1.11 biomass ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_co.061.%y4%m2%d2.nc4 CO_OH NA Y Y %y4-%m2-%d2t12:00:00 none none oh ExtData/PIESA/L72/gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc CO_CH4 NA Y Y %y4-%m2-%d2t12:00:00 none none ch4 ExtData/PIESA/L72/gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc CO_BF NA Y Y %y4-%m2-%d2t12:00:00 none 1.19 emcobf ExtData/PIESA/sfc/co_biofuel_v2.x360_y181_t12.2001.nc diff --git a/ESMF/GOCART_GridComp/CO_GridComp/AMIP/CO_GridComp_ExtData.yaml b/ESMF/GOCART_GridComp/CO_GridComp/AMIP/CO_GridComp_ExtData.yaml index 19e0059f..c2d7262f 100644 --- a/ESMF/GOCART_GridComp/CO_GridComp/AMIP/CO_GridComp_ExtData.yaml +++ b/ESMF/GOCART_GridComp/CO_GridComp/AMIP/CO_GridComp_ExtData.yaml @@ -9,8 +9,8 @@ Collections: template: ExtData/PIESA/sfc/co_fossilfuel_v2.x360_y181_t12.2001.nc CO_gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc: template: ExtData/PIESA/L72/gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc - CO_qfed2.emis_co.006.%y4%m2%d2.nc4: - template: ExtData/chemistry/QFED/v2.5r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_co.006.%y4%m2%d2.nc4 + CO_qfed2.emis_co.061.%y4%m2%d2.nc4: + template: ExtData/chemistry/QFED/v2.6r1/sfc/0.1/Y%y4/M%m2/qfed2.emis_co.061.%y4%m2%d2.nc4 valid_range: "2000-02-29T12:00/2025-01-01" CO_hfed.emis_co.x576_y361.%y4%m2.nc4: template: ExtData/chemistry/HFED/v1.0/Y%y4/M%m2/hfed.emis_co.x576_y361.%y4%m2.nc4 @@ -67,7 +67,7 @@ Exports: variable: bf CO_BIOMASS: - {starting: "1960-01-16T12:00", collection: CO_hfed.emis_co.x576_y361.%y4%m2.nc4, linear_transformation: [0.0,1.11], regrid: CONSERVE, sample: CO_sample_0, variable: biomass} - - {starting: "2000-03-01T00:00", collection: CO_qfed2.emis_co.006.%y4%m2%d2.nc4, linear_transformation: [0.0, 1.11], regrid: CONSERVE, sample: CO_sample_0, variable: biomass} + - {starting: "2000-03-01T00:00", collection: CO_qfed2.emis_co.061.%y4%m2%d2.nc4, linear_transformation: [0.0, 1.11], regrid: CONSERVE, sample: CO_sample_0, variable: biomass} CO_BIOMASSnbas: collection: /dev/null regrid: CONSERVE diff --git a/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.rc b/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.rc index 27809101..8294d023 100755 --- a/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.rc +++ b/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.rc @@ -3,7 +3,7 @@ PrimaryExports%% # Import | | | Regrid | Refresh | OffSet | Scale | Variable On | File | # Name | Units | Clim | Method | Time Template | Factor | Factor | File | Template | # -------------|-------|-------|--------|----------------------|--------|--------|-------------|----------| -CO_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 1.11 biomass ExtData/PIESA/sfc/QFED/NRT/v2.5r1_0.1_deg/Y%y4/M%m2/qfed2.emis_co.006.%y4%m2%d2.nc4 +CO_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none 1.11 biomass ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_co.006.%y4%m2%d2.nc4 CO_OH NA Y Y %y4-%m2-%d2t12:00:00 none none oh ExtData/PIESA/L72/gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc CO_CH4 NA Y Y %y4-%m2-%d2t12:00:00 none none ch4 ExtData/PIESA/L72/gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc CO_BF NA Y Y %y4-%m2-%d2t12:00:00 none 1.19 emcobf ExtData/PIESA/sfc/co_biofuel_v2.x360_y181_t12.2001.nc diff --git a/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml b/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml index 45072190..9888a4c6 100644 --- a/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml +++ b/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml @@ -9,11 +9,11 @@ Collections: template: ExtData/PIESA/sfc/co_fossilfuel_v2.x360_y181_t12.2001.nc CO_gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc: template: ExtData/PIESA/L72/gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc - CO_qfed2.emis_co.006.%y4%m2%d2.nc4: - template: ExtData/PIESA/sfc/QFED/NRT/v2.5r1_0.1_deg/Y%y4/M%m2/qfed2.emis_co.006.%y4%m2%d2.nc4 + CO_qfed2.emis_co.006.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_co.006.%y4%m2%d2.nc4 valid_range: "2014-12-01T12:00/2021-11-01T12:00" CO_qfed2.emis_co.061.%y4%m2%d2.nc4: - template: ExtData/PIESA/sfc/QFED/NRT/v2.5r1_0.1_deg/Y%y4/M%m2/qfed2.emis_co.061.%y4%m2%d2.nc4 + template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_co.061.%y4%m2%d2.nc4 valid_range: "2021-11-01T12:00/2025-01-01" Samplings: From c1a6abc238ad97b8525a7c303d8995d7b01345bc Mon Sep 17 00:00:00 2001 From: vbuchard Date: Tue, 29 Nov 2022 15:41:08 -0500 Subject: [PATCH 16/28] update CHANGELOG --- CHANGELOG.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44392772..f1e2c072 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,20 +9,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -### Fixed - -### Changed - -## [2.1.2] - 2022-10-07 - -### Added - -- Extinction exports with RH=20% and RH=80% +- Extinction/Scattering profile exports at model RH at wavelengths_profile +- Extinction/Scattering profile exports with RH=20% and RH=80% at wavelengths_profile +- Aerosol single scattering backscatter coefficient for each instances and total at wavelengths_profile +- Total (molecular + aerosols) attenuated backscatter coefficient from TOA and sfc at 532nm ### Fixed ### Changed +- For OPS configuration: removal of links, change of QFED paths from vNRT/ to v2.5r1-nrt/ (note after November 2021, files are v2.6r1) +- For AMIP configuration: update of QFED from v2.5r1 to v2.6r1 +- Update of climatological paths from MERRAero to MERRA-2 + ## [2.1.1] - 2022-09-16 ### Fixed From fff2c05b9bdd1ff1508a1cf50527a6799bc528e0 Mon Sep 17 00:00:00 2001 From: vbuchard Date: Wed, 30 Nov 2022 15:04:47 -0500 Subject: [PATCH 17/28] update on a condition of failing --- ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 index d1108e0b..a0974e7c 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 +++ b/ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90 @@ -204,7 +204,6 @@ subroutine SetServices (GC, RC) #include "GOCART2G_Export___.h" #include "GOCART2G_Import___.h" -#include "GOCART2G_Internal___.h" ! Add connectivities for Nitrate component ! Nitrate currently only supports one Nitrate component. Nitrate only @@ -1142,7 +1141,7 @@ subroutine Run2 (GC, import, export, clock, RC) ! Calculate the total (molecular + aer) single scattering attenuated backscater coef from the TOA if(associated(totabcktoa).or.associated(totabcksfc)) then - if (.not.associated(totextcoef) .and. .not. associated(totbckcoef)) then + if (.not.associated(totextcoef) .or. .not.associated(totbckcoef)) then print*,trim(Iam),' : TOTEXTCOEF and TOTBCKCOEF and their children needs to be requested in HISTORY.rc.',& ' Cannot produce TOTABCKTOA or TOTABCKSFC variables without these exports.' VERIFY_(100) From dd2f156a470975f1ff3da1ae0a50d46b56f489d2 Mon Sep 17 00:00:00 2001 From: vbuchard Date: Thu, 1 Dec 2022 15:02:22 -0500 Subject: [PATCH 18/28] added a : missing --- ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml b/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml index 9888a4c6..11ac1acf 100644 --- a/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml +++ b/ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml @@ -9,7 +9,7 @@ Collections: template: ExtData/PIESA/sfc/co_fossilfuel_v2.x360_y181_t12.2001.nc CO_gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc: template: ExtData/PIESA/L72/gmi_oh_ch4_h2o2_no3.x144_y91_z72_t12.2006.nc - CO_qfed2.emis_co.006.%y4%m2%d2.nc4 + CO_qfed2.emis_co.006.%y4%m2%d2.nc4: template: ExtData/chemistry/QFED/v2.5r1-nrt/sfc/0.1/Y%y4/M%m2/qfed2.emis_co.006.%y4%m2%d2.nc4 valid_range: "2014-12-01T12:00/2021-11-01T12:00" CO_qfed2.emis_co.061.%y4%m2%d2.nc4: From aeb84091818ad5b09e5088ad30e796f656e1736a Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Thu, 1 Dec 2022 15:12:19 -0500 Subject: [PATCH 19/28] Move to use GitHub Action for Label Enforcement Due to changes at Heroku, we need to transition to use a GitHub Action for label enforcement. The current label enforcer no longer works, so PRs will be "stuck" until this is fixed. --- .github/workflows/enforce-labels.yml | 29 ++++++++++++++++++++++++++++ CHANGELOG.md | 2 ++ 2 files changed, 31 insertions(+) create mode 100644 .github/workflows/enforce-labels.yml diff --git a/.github/workflows/enforce-labels.yml b/.github/workflows/enforce-labels.yml new file mode 100644 index 00000000..6e1720ef --- /dev/null +++ b/.github/workflows/enforce-labels.yml @@ -0,0 +1,29 @@ +name: Enforce PR Labels + +on: + pull_request: + types: [opened, labeled, unlabeled, edited, synchronize] + +jobs: + require-label: + runs-on: ubuntu-latest + steps: + - uses: mheap/github-action-required-labels@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + mode: minimum + count: 1 + labels: "0 diff,0 diff trivial,Non 0-diff,0 diff structural,0-diff trivial,Not 0-diff,0-diff,automatic,0-diff uncoupled" + add_comment: true + blocking-label: + runs-on: ubuntu-latest + steps: + - uses: mheap/github-action-required-labels@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + mode: exactly + count: 0 + labels: "Contingent - DNA,Needs Lead Approval,Contingent -- Do Not Approve" + add_comment: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 44392772..e8262bef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Moved to use GitHub Action for label enforcement + ## [2.1.2] - 2022-10-07 ### Added From 3bd7f4f8aca1fd330c95f64991e61863628a9284 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Fri, 2 Dec 2022 16:17:41 -0500 Subject: [PATCH 20/28] Update CircleCI and components --- .circleci/config.yml | 2 +- CHANGELOG.md | 2 ++ components.yaml | 10 +++++----- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 37bc9c57..dbd42c6d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,7 @@ version: 2.1 # Anchors to prevent forgetting to update a version -baselibs_version: &baselibs_version v7.5.0 +baselibs_version: &baselibs_version v7.7.0 bcs_version: &bcs_version v10.23.0 orbs: diff --git a/CHANGELOG.md b/CHANGELOG.md index e8262bef..76b3d758 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Moved to use GitHub Action for label enforcement +- Updated CircleCI image to use Baselibs 7.7.0 +- Update `components.yaml` to reflect GEOSgcm ## [2.1.2] - 2022-10-07 diff --git a/components.yaml b/components.yaml index 4d79d1c1..008cec8b 100644 --- a/components.yaml +++ b/components.yaml @@ -5,19 +5,19 @@ GOCART: env: local: ./env@ remote: ../ESMA_env.git - tag: v4.2.0 + tag: v4.8.0 develop: main cmake: local: ./cmake@ remote: ../ESMA_cmake.git - tag: v3.17.0 + tag: v3.21.0 develop: develop ecbuild: local: ./cmake@/ecbuild@ remote: ../ecbuild.git - tag: geos/v1.2.0 + tag: geos/v1.3.0 HEMCO: local: ./ESMF/HEMCO_GridComp@ @@ -27,12 +27,12 @@ HEMCO: GMAO_Shared: local: ./ESMF/Shared/GMAO_Shared@ remote: ../GMAO_Shared.git - tag: v1.5.6 + tag: v1.6.2 sparse: ./config/GMAO_Shared.sparse develop: main MAPL: local: ./ESMF/Shared/MAPL@ remote: ../MAPL.git - tag: v2.23.1 + tag: v2.32.0 develop: develop From 1aadc137a05c4e016424948426a660f5a0e1644c Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Mon, 9 Jan 2023 08:44:23 -0500 Subject: [PATCH 21/28] Fixes #202. Add star to CA state spec --- CHANGELOG.md | 2 + .../CA2G_GridComp/CA2G_StateSpecs.rc | 62 +++++++++---------- components.yaml | 6 +- 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76b3d758..39409202 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Added `*` to CA State specs file to allow for ACG to substitute in the instance name + ### Fixed ### Changed diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc index 83057eae..73d5538a 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc @@ -74,36 +74,36 @@ category: EXPORT #---------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | UNGRIDDED | LONG NAME #---------------------------------------------------------------------------------------- - *MASS | kg kg-1 | xyz | C | | Carbonaceous Aerosol Mass Mixing Ratio - *CONC | kg m-3 | xyz | C | | Carbonaceous Aerosol Mass Concentration - *EXTCOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Extinction Coefficient - *EXTCOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Extinction Coefficient - Fixed RH=20% - *EXTCOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Extinction Coefficient - Fixed RH=80% - *SCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Scattering Coefficient - *SCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Scattering Coefficient - Fixed RH=20% - *SCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | Carbonaceous Aerosol Scattering Coefficient - Fixed RH=80% + *MASS | kg kg-1 | xyz | C | | * Carbonaceous Aerosol Mass Mixing Ratio + *CONC | kg m-3 | xyz | C | | * Carbonaceous Aerosol Mass Concentration + *EXTCOEF | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Extinction Coefficient + *EXTCOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Extinction Coefficient - Fixed RH=20% + *EXTCOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Extinction Coefficient - Fixed RH=80% + *SCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Scattering Coefficient + *SCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Scattering Coefficient - Fixed RH=20% + *SCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Scattering Coefficient - Fixed RH=80% #............ | ............ | ..... | ..... | ....... | ............................................ - *EM | kg m-2 s-1 | xy | N | nbins | Carbonaceous Aerosol Emission (Bin %d) - *SD | kg m-2 s-1 | xy | N | nbins | Carbonaceous Aerosol Sedimentation (Bin %d) - *DP | kg m-2 s-1 | xy | N | nbins | Carbonaceous Aerosol Dry Deposition (Bin %d) - *WT | kg m-2 s-1 | xy | N | nbins | Carbonaceous Aerosol Wet Deposition (Bin %d) - *SV | kg m-2 s-1 | xy | N | nbins | Carbonaceous Aerosol Convective Scavenging (Bin %d) - *EMAN | kg m-2 s-1 | xy | N | | Carbonaceous Aerosol Anthropogenic Emissions - *EMBB | kg m-2 s-1 | xy | N | | Carbonaceous Aerosol Biomass Burning Emissions - *EMBF | kg m-2 s-1 | xy | N | | Carbonaceous Aerosol Biofuel Emissions - *EMBG | kg m-2 s-1 | xy | N | | Carbonaceous Aerosol Biogenic Emissions - *HYPHIL | kg m-2 s-1 | xy | N | | Carbonaceous Aerosol Hydrophobic to Hydrophilic - *PSOA | kg m-2 s-1 | xy | N | | Carbonaceous Aerosol SOA Production - *SMASS | kg m-3 | xy | N | | Carbonaceous Aerosol Surface Mass Concentration - *CMASS | kg m-2 | xy | N | | Carbonaceous Aerosol Column Mass Density - *EXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Carbonaceous Aerosol Extinction AOT - *STEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Carbonaceous Aerosol Extinction AOT Stratosphere - *SCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Carbonaceous Aerosol Scattering AOT - *STSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Carbonaceous Aerosol Scattering AOT Stratosphere - *ANGSTR | 1 | xy | N | | Carbonaceous Aerosol Angstrom parameter [470-870 nm] - *FLUXU | kg m-1 s-1 | xy | N | | Carbonaceous Aerosol column u-wind mass flux - *FLUXV | kg m-1 s-1 | xy | N | | Carbonaceous Aerosol column v-wind mass flux - *AERIDX | 1 | xy | N | | Carbonaceous Aerosol TOMS UV Aerosol Index + *EM | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Emission (Bin %d) + *SD | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Sedimentation (Bin %d) + *DP | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Dry Deposition (Bin %d) + *WT | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Wet Deposition (Bin %d) + *SV | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Convective Scavenging (Bin %d) + *EMAN | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Anthropogenic Emissions + *EMBB | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Biomass Burning Emissions + *EMBF | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Biofuel Emissions + *EMBG | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Biogenic Emissions + *HYPHIL | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Hydrophobic to Hydrophilic + *PSOA | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol SOA Production + *SMASS | kg m-3 | xy | N | | * Carbonaceous Aerosol Surface Mass Concentration + *CMASS | kg m-2 | xy | N | | * Carbonaceous Aerosol Column Mass Density + *EXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Carbonaceous Aerosol Extinction AOT + *STEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Carbonaceous Aerosol Extinction AOT Stratosphere + *SCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Carbonaceous Aerosol Scattering AOT + *STSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Carbonaceous Aerosol Scattering AOT Stratosphere + *ANGSTR | 1 | xy | N | | * Carbonaceous Aerosol Angstrom parameter [470-870 nm] + *FLUXU | kg m-1 s-1 | xy | N | | * Carbonaceous Aerosol column u-wind mass flux + *FLUXV | kg m-1 s-1 | xy | N | | * Carbonaceous Aerosol column v-wind mass flux + *AERIDX | 1 | xy | N | | * Carbonaceous Aerosol TOMS UV Aerosol Index @@ -113,8 +113,8 @@ category: INTERNAL #-------------------------------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME #-------------------------------------------------------------------------------------------------------------- - *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Carbonaceous Aerosol Mixing Ratio - *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Carbonaceous Aerosol Mixing Ratio + *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Carbonaceous Aerosol Mixing Ratio + *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Carbonaceous Aerosol Mixing Ratio #******************************************************** # diff --git a/components.yaml b/components.yaml index 008cec8b..715bcea1 100644 --- a/components.yaml +++ b/components.yaml @@ -11,7 +11,7 @@ env: cmake: local: ./cmake@ remote: ../ESMA_cmake.git - tag: v3.21.0 + tag: v3.24.0 develop: develop ecbuild: @@ -27,12 +27,12 @@ HEMCO: GMAO_Shared: local: ./ESMF/Shared/GMAO_Shared@ remote: ../GMAO_Shared.git - tag: v1.6.2 + tag: v1.6.3 sparse: ./config/GMAO_Shared.sparse develop: main MAPL: local: ./ESMF/Shared/MAPL@ remote: ../MAPL.git - tag: v2.32.0 + tag: v2.34.0 develop: develop From da43ef5181718226c4fb1e0ed3101aba28d08324 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Mon, 9 Jan 2023 09:27:24 -0500 Subject: [PATCH 22/28] Remove Carbonaceous --- .../CA2G_GridComp/CA2G_StateSpecs.rc | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc index 73d5538a..f632adc0 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc @@ -74,36 +74,36 @@ category: EXPORT #---------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | UNGRIDDED | LONG NAME #---------------------------------------------------------------------------------------- - *MASS | kg kg-1 | xyz | C | | * Carbonaceous Aerosol Mass Mixing Ratio - *CONC | kg m-3 | xyz | C | | * Carbonaceous Aerosol Mass Concentration - *EXTCOEF | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Extinction Coefficient - *EXTCOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Extinction Coefficient - Fixed RH=20% - *EXTCOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Extinction Coefficient - Fixed RH=80% - *SCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Scattering Coefficient - *SCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Scattering Coefficient - Fixed RH=20% - *SCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | * Carbonaceous Aerosol Scattering Coefficient - Fixed RH=80% + *MASS | kg kg-1 | xyz | C | | * Aerosol Mass Mixing Ratio + *CONC | kg m-3 | xyz | C | | * Aerosol Mass Concentration + *EXTCOEF | m-1 | xyz | C | size(self%wavelengths_profile) | * Aerosol Extinction Coefficient + *EXTCOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | * Aerosol Extinction Coefficient - Fixed RH=20% + *EXTCOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | * Aerosol Extinction Coefficient - Fixed RH=80% + *SCACOEF | m-1 | xyz | C | size(self%wavelengths_profile) | * Aerosol Scattering Coefficient + *SCACOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | * Aerosol Scattering Coefficient - Fixed RH=20% + *SCACOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | * Aerosol Scattering Coefficient - Fixed RH=80% #............ | ............ | ..... | ..... | ....... | ............................................ - *EM | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Emission (Bin %d) - *SD | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Sedimentation (Bin %d) - *DP | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Dry Deposition (Bin %d) - *WT | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Wet Deposition (Bin %d) - *SV | kg m-2 s-1 | xy | N | nbins | * Carbonaceous Aerosol Convective Scavenging (Bin %d) - *EMAN | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Anthropogenic Emissions - *EMBB | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Biomass Burning Emissions - *EMBF | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Biofuel Emissions - *EMBG | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Biogenic Emissions - *HYPHIL | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol Hydrophobic to Hydrophilic - *PSOA | kg m-2 s-1 | xy | N | | * Carbonaceous Aerosol SOA Production - *SMASS | kg m-3 | xy | N | | * Carbonaceous Aerosol Surface Mass Concentration - *CMASS | kg m-2 | xy | N | | * Carbonaceous Aerosol Column Mass Density - *EXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Carbonaceous Aerosol Extinction AOT - *STEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Carbonaceous Aerosol Extinction AOT Stratosphere - *SCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Carbonaceous Aerosol Scattering AOT - *STSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Carbonaceous Aerosol Scattering AOT Stratosphere - *ANGSTR | 1 | xy | N | | * Carbonaceous Aerosol Angstrom parameter [470-870 nm] - *FLUXU | kg m-1 s-1 | xy | N | | * Carbonaceous Aerosol column u-wind mass flux - *FLUXV | kg m-1 s-1 | xy | N | | * Carbonaceous Aerosol column v-wind mass flux - *AERIDX | 1 | xy | N | | * Carbonaceous Aerosol TOMS UV Aerosol Index + *EM | kg m-2 s-1 | xy | N | nbins | * Aerosol Emission (Bin %d) + *SD | kg m-2 s-1 | xy | N | nbins | * Aerosol Sedimentation (Bin %d) + *DP | kg m-2 s-1 | xy | N | nbins | * Aerosol Dry Deposition (Bin %d) + *WT | kg m-2 s-1 | xy | N | nbins | * Aerosol Wet Deposition (Bin %d) + *SV | kg m-2 s-1 | xy | N | nbins | * Aerosol Convective Scavenging (Bin %d) + *EMAN | kg m-2 s-1 | xy | N | | * Aerosol Anthropogenic Emissions + *EMBB | kg m-2 s-1 | xy | N | | * Aerosol Biomass Burning Emissions + *EMBF | kg m-2 s-1 | xy | N | | * Aerosol Biofuel Emissions + *EMBG | kg m-2 s-1 | xy | N | | * Aerosol Biogenic Emissions + *HYPHIL | kg m-2 s-1 | xy | N | | * Aerosol Hydrophobic to Hydrophilic + *PSOA | kg m-2 s-1 | xy | N | | * Aerosol SOA Production + *SMASS | kg m-3 | xy | N | | * Aerosol Surface Mass Concentration + *CMASS | kg m-2 | xy | N | | * Aerosol Column Mass Density + *EXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Extinction AOT + *STEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Extinction AOT Stratosphere + *SCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Scattering AOT + *STSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Scattering AOT Stratosphere + *ANGSTR | 1 | xy | N | | * Aerosol Angstrom parameter [470-870 nm] + *FLUXU | kg m-1 s-1 | xy | N | | * Aerosol column u-wind mass flux + *FLUXV | kg m-1 s-1 | xy | N | | * Aerosol column v-wind mass flux + *AERIDX | 1 | xy | N | | * Aerosol TOMS UV Aerosol Index @@ -113,8 +113,8 @@ category: INTERNAL #-------------------------------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME #-------------------------------------------------------------------------------------------------------------- - *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Carbonaceous Aerosol Mixing Ratio - *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Carbonaceous Aerosol Mixing Ratio + *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Aerosol Mixing Ratio + *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Aerosol Mixing Ratio #******************************************************** # From 0be92cc775df873d2911211d54a411c30eef0b86 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Mon, 9 Jan 2023 11:42:04 -0500 Subject: [PATCH 23/28] Fix typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39409202..d6332e99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Added `*` to CA State specs file to allow for ACG to substitute in the instance name +- Added `*` to CA State specs file to allow for ACG to substitute in the long name ### Fixed From bdc7ee4e916a161da62261904e874619470a549e Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Mon, 9 Jan 2023 11:44:39 -0500 Subject: [PATCH 24/28] Add hydrophobic, philic --- ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc index f632adc0..2a918bb9 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc @@ -113,8 +113,8 @@ category: INTERNAL #-------------------------------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME #-------------------------------------------------------------------------------------------------------------- - *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Aerosol Mixing Ratio - *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Aerosol Mixing Ratio + *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Hydrophobic Aerosol Mixing Ratio + *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Hydrophilic Aerosol Mixing Ratio #******************************************************** # From f0aea0314c9c128c3d84cbee77211d9bb48c4f28 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Mon, 9 Jan 2023 12:14:33 -0500 Subject: [PATCH 25/28] Don't change internal state --- ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc index 2a918bb9..c1d6c057 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc @@ -113,8 +113,8 @@ category: INTERNAL #-------------------------------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME #-------------------------------------------------------------------------------------------------------------- - *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Hydrophobic Aerosol Mixing Ratio - *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Hydrophilic Aerosol Mixing Ratio + *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Carbonaceous Aerosol Mixing Ratio + *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Carbonaceous Aerosol Mixing Ratio #******************************************************** # From 5dce89ee10f8787df90d4215903e2521cb5ab96a Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Tue, 17 Jan 2023 14:47:01 -0500 Subject: [PATCH 26/28] Change philic phobic --- ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc index c1d6c057..2a918bb9 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc @@ -113,8 +113,8 @@ category: INTERNAL #-------------------------------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | RESTART | ADD2EXPORT | FRIENDLYTO | LONG NAME #-------------------------------------------------------------------------------------------------------------- - *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Carbonaceous Aerosol Mixing Ratio - *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | Carbonaceous Aerosol Mixing Ratio + *phobic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Hydrophobic Aerosol Mixing Ratio + *philic | kg kg-1 | xyz | C | MAPL_RestartOptional | T | DYNAMICS:TURBULENCE:MOIST | * Hydrophilic Aerosol Mixing Ratio #******************************************************** # From 22704d20fb4cf781a404fe9b492aedea97a6b188 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Tue, 17 Jan 2023 14:52:43 -0500 Subject: [PATCH 27/28] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6332e99..9465f279 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Moved to use GitHub Action for label enforcement - Updated CircleCI image to use Baselibs 7.7.0 - Update `components.yaml` to reflect GEOSgcm +- CA restarts will have a change in longname for `philic` and `phobic` variables due to addition of `*` in the CA State specs file + for the Internal state variables ## [2.1.2] - 2022-10-07 From a936990598cb729a093f7a9fbb63df008f028c18 Mon Sep 17 00:00:00 2001 From: "Arlindo M. da Silva" <33208803+amdasilva@users.noreply.github.com> Date: Mon, 27 Feb 2023 17:09:22 -0500 Subject: [PATCH 28/28] Update CHANGELOG.md --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f419b27..a2d479c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +### Fixed + +### Changed + + +## [2.1.3] - 2023-02-27 + +### Added + - Added `*` to CA State specs file to allow for ACG to substitute in the long name - Changes were made so GOCART2G and its children can be run with component level OpenMP threading. The key change is to create the data structure ThreadWorkspace