GithubHelp home page GithubHelp logo

open-atmos / wrf-partmc Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 2.0 42.17 MB

Repository for the particle-resolved aerosol model PartMC coupled to the Weather Research and Forecasting (WRF) model

Perl 0.18% Shell 1.10% Makefile 0.28% Fortran 92.92% C 3.47% OCaml 0.01% NCL 0.09% EmberScript 0.01% Python 0.05% Roff 1.45% sed 0.01% MATLAB 0.02% PLSQL 0.19% Emacs Lisp 0.01% Lex 0.06% Yacc 0.06% Forth 0.01% M4 0.05% Ruby 0.01% Jupyter Notebook 0.04%
aerosols atmospheric-modeling monte-carlo-simulation fortran wrf-chem

wrf-partmc's Introduction

WRF-PartMC

WRF-PartMC is a coupled model that combines the strengths of the Weather Research and Forecast (WRF) model (state-of-the-art mesoscale numerical weather prediction) with the strengths of the particle-resolved aerosol model PartMC (state-of-the-art aerosol dynamics and chemistry capable of resolving complex aerosol composition). This enables the use of high detailed aerosol representation at the regional scale.

Acquiring and building WRF-PartMC

  1. To clone the WRF-PartMC repository:

    git clone https://github.com/open-atmos/wrf-partmc.git

  2. Change into the clone repository:

    cd wrf-partmc

  3. To checkout the PartMC submodule:

    git submodule update --init partmc

  4. And if you have access to MOSAIC, you may check it out it by:

    git submodule update --init mosaic

  5. In order to compile with MOSAIC support, set the environmental variable:

    export MOSAIC=1

    This flag will signal to the WRF-PartMC build process to attempt to build MOSAIC.

  6. WRF-PartMC requires WRF-Chem to be built so set the environmental flag (WRF_CHEM) for WRF-Chem to be included by:

    export WRF_CHEM=1

  7. To configure and compile, follow the process for a standard WRF installation which is:

    cd WRFV3

  8. Set the netCDF path as done for WRF, typically can be done by:

    export NETCDF=$(nc-config --prefix)

  9. You should be ready to configure the model by:

    ./configure

    and select the compiler options as you would do in WRF. WRF-PartMC does not currently support domain nesting. You can still build WRF with nesting enabled but you'll be limited to one domain when enabling PartMC.

  10. To compile WRF-PartMC,

    ./compile em_real

Other choices may include em_rotational, em_les and em_scm_xy. See individual directories in test/ for any specific instructions.

Description of the directories found in this repo

  • WPS/ is the WRF preprocessor that creates the inputs for WRF (version 3.9.1)
  • WRFV3/ is the meteorology model and is a modified version of 3.9.1. NOTE: WPS and WRF should match in version number.
  • partmc/ is a submodule that points to a specific version that is for WRF-PartMC.
  • mozbc/ takes wrfinput and wrfbdy from ./real.exe and populates these files with values from the MOZART output.
  • emissions/ contains the program to create WRF-PartMC emissions from SMOKE source-apportioned data
  • boundary_and_initial_conditions/ contains programs to create initial and boundary conditions from the wrfinput and wrfbdy files using MOZART global model output.
  • interface/ is all the code required to interface WRF with PartMC
  • mosaic/ is the chemistry code which is available by request.

wrf-partmc's People

Contributors

jcurtis2 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

wrf-partmc's Issues

Vertical turbulent diffusion probability lower bound causing stalled simulations

I noticed the repository version of the diffusion code still has the lower probability bound on vertical turbulent diffusion in interface/wrf_pmc_trans_aero.F90. This was leading to hanging simulations and appears to occur earlier as we increase the number of particles. Adding the following commented lines (starting around line 1510) seems to fix the issue:

do k = pmc_ks,pmc_ke if (k .ne. k_index) then prob = env_state%prob_vert_diffusion(k,i_class) ! if (prob > 1.0d-6) then dest_vol = env_states(i_index,k,j_index)%cell_volume flux = prob * num_conc_old num_conc_new(i_index,k,j_index) = & num_conc_new(i_index,k,j_index) + flux * & (dest_vol / source_vol) num_conc_new(i_index,k_index,j_index) = & num_conc_new(i_index,k_index,j_index) - flux ! end if end if end do

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.