Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge WRF-PartMC PartMC specific development to PartMC #168

Merged
merged 148 commits into from
Feb 23, 2024

Conversation

jcurtis2
Copy link
Collaborator

@jcurtis2 jcurtis2 commented Jun 9, 2022

This pull request merges in many of the changes I've made for using PartMC with WRF.

Changes included:

  • Sources contributing to a particle are tracked as an array aero_components which is replacing n_orig_part to reduce memory requirements. WRF-PartMC for example had 70+ sources which made n_orig_part very large yet sparsely populated as most particles have few sources.
  • Weight class selection for each aerosol source to allow intermediate options between not weighting sources separately and representing all sources separately. With 70+ sources in WRF-PartMC, coagulation becomes very slow so sources can be grouped together to reduce costs.
  • Option to not sample particles that are a certain number of standard deviations from the mean using a sampling timescale.
  • Changed to requiring netCDF4 to allow for int64 for aero_id.
  • New preprocessor flags for WRF-PartMC specific variables and processes (PMC_USE_WRF)

Things to consider/address before merging:

  • Change particle_error in MOSAIC.F90 to be WRF-PartMC only which avoids MOSAIC killing a run for a "bad" particle.
  • Determine what happens to aero_component for per_particle coagulation. aero_component in this case currently gives less information than the old method.
  • Should we bring back source weighting as a default so users do not have to specify weight classes in input files.
  • Add an integer to aero_particle that tracks the true number of components
  • Mixing state size selected - replace current method with making a sampled aero_state
  • Fix optical properties to be an array which will be size 1 in the box model and size 5 in WRF-PartMC
  • Add various WRF-PartMC subroutines into PartMC
    • partmc_trans_aero.F90: subroutine aero_state_duplicate_particles... added as aero_state_dup_all_particles
    • partmc_trans_aero.F90: real(kind=dp) function aero_state_group_class_num_conc
    • partmc_driver.F90: function aero_state_num_concs_by_source
    • partmc_driver.F90: real(kind=dp) function aero_state_total_num_conc_wet
    • Check aero_state functions that have grid but might not need them. move to PartMC if they do not need grid.

src/bin_grid.F90 Outdated Show resolved Hide resolved
src/aero_state.F90 Outdated Show resolved Hide resolved
@jcurtis2 jcurtis2 merged commit 3aad1f6 into compdyn:master Feb 23, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants