Skip to content

Commit

Permalink
add drafts of listing files
Browse files Browse the repository at this point in the history
  • Loading branch information
slayoo committed Aug 1, 2023
1 parent 5babcb4 commit d07cb89
Show file tree
Hide file tree
Showing 8 changed files with 160 additions and 0 deletions.
19 changes: 19 additions & 0 deletions examples/paper_listings/fortran/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
project(main LANGUAGES Fortran)
add_executable(main
main.f90
$ENV{PARTMC_HOME}/src/spec_file.F90
$ENV{PARTMC_HOME}/src/spec_line.F90
$ENV{PARTMC_HOME}/src/util.F90
$ENV{PARTMC_HOME}/src/constants.F90
$ENV{PARTMC_HOME}/src/aero_data.F90
$ENV{PARTMC_HOME}/src/aero_mode.F90
$ENV{PARTMC_HOME}/src/aero_dist.F90
$ENV{PARTMC_HOME}/src/aero_state.F90
$ENV{PARTMC_HOME}/src/mpi.F90
$ENV{PARTMC_HOME}/src/fractal.F90
$ENV{PARTMC_HOME}/src/netcdf.F90
)
target_include_directories(
main
PRIVATE /home/slayoo/devel/PyPartMC/build/temp.linux-x86_64-3.10/_PyPartMC
)
2 changes: 2 additions & 0 deletions examples/paper_listings/fortran/aero_data.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# dens (kg/m^3) ions in soln (1) molec wght (kg/mole) kappa (1)
H2O 1000 0 18d-3 0
15 changes: 15 additions & 0 deletions examples/paper_listings/fortran/aero_dist.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
mode_name mode_a
mass_frac aero_mode_a_comp.dat
diam_type geometric
mode_type log_normal
num_conc 9.0E+06 # (#/m^2)
geom_mean_diam 8.64e-8 # (m)
log10_geom_std_dev 0.28

mode_name mode_b
mass_frac aero_mode_b_comp.dat
diam_type geometric
mode_type log_normal
num_conc 1.6E+08 # (#/m^2)
geom_mean_diam 5e-8
log10_geom_std_dev 0.24
3 changes: 3 additions & 0 deletions examples/paper_listings/fortran/aero_mode_a_comp.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# proportion
H2O 1

3 changes: 3 additions & 0 deletions examples/paper_listings/fortran/aero_mode_b_comp.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# proportion
H2O 1

22 changes: 22 additions & 0 deletions examples/paper_listings/fortran/main.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
program main

use pmc_spec_file
use pmc_aero_data
use pmc_aero_mode
use pmc_aero_dist

type(spec_file_t) :: f_aero_data, f_aero_dist
type(aero_data_t) :: aero_data
type(aero_dist_t) :: aero_dist

call spec_file_open("aero_data.dat", f_aero_data)
call spec_file_read_aero_data(f_aero_data, aero_data)
call spec_file_close(f_aero_data)

call spec_file_open("aero_dist.dat", f_aero_dist)
call spec_file_read_aero_dist(f_aero_dist, aero_data, aero_dist)
call spec_file_close(f_aero_dist)

print*, aero_dist_total_num_conc(aero_dist)

end
47 changes: 47 additions & 0 deletions examples/paper_listings/julia/main.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using Pkg
Pkg.add("PyCall")

using PyCall
ppmc = pyimport("PyPartMC")

si = ppmc["si"]

aero_data = ppmc.AeroData((
# (density, ions in solution, molecular weight, kappa)
Dict("OC" => (1000 * si.kg/si.m^3, 0, 1e-3 * si.kg/si.mol, 0.001)),
Dict("BC" => (1800 * si.kg/si.m^3, 0, 1e-3 * si.kg/si.mol, 0))
))

aero_dist = ppmc.AeroDist(aero_data, (
Dict(
"cooking" => Dict(
"mass_frac" => (Dict("OC" => (1,)),),
"diam_type" => "geometric",
"mode_type" => "log_normal",
"num_conc" => 3200 / si.cm^3,
"geom_mean_diam" => 8.64 * si.nm,
"log10_geom_std_dev" => .28,
)
),
Dict(
"diesel" => Dict(
"mass_frac" => (Dict("OC" => (.3,)), Dict("BC" => (.7,))),
"diam_type" => "geometric",
"mode_type" => "log_normal",
"num_conc" => 2900 / si.m^3,
"geom_mean_diam" => 50 * si.nm,
"log10_geom_std_dev" => .24,
)
)
))

n_part = 100
seed = 44
offset = 0

aero_state = ppmc.AeroState(n_part, aero_data)

ppmc.rand_init(seed, offset)
aero_state.dist_sample(aero_dist)

print(sum(aero_state.masses))
49 changes: 49 additions & 0 deletions examples/paper_listings/python/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import numpy as np

import PyPartMC as ppmc
from PyPartMC import si

aero_data = ppmc.AeroData(
(
# [density, ions in solution, molecular weight, kappa]
{"OC": [1000 * si.kg / si.m**3, 0, 1e-3 * si.kg / si.mol, 0.001]},
{"BC": [1800 * si.kg / si.m**3, 0, 1e-3 * si.kg / si.mol, 0]},
)
)

aero_dist = ppmc.AeroDist(
aero_data,
[
{
"cooking": {
"mass_frac": [{"OC": [1]}],
"diam_type": "geometric",
"mode_type": "log_normal",
"num_conc": 3200 / si.cm**3,
"geom_mean_diam": 8.64 * si.nm,
"log10_geom_std_dev": 0.28,
}
},
{
"diesel": {
"mass_frac": [{"OC": [0.3]}, {"BC": [0.7]}],
"diam_type": "geometric",
"mode_type": "log_normal",
"num_conc": 2900 / si.cm**3,
"geom_mean_diam": 50 * si.nm,
"log10_geom_std_dev": 0.24,
}
},
],
)

n_part = 100
seed = 44
offset = 0

aero_state = ppmc.AeroState(n_part, aero_data)

ppmc.rand_init(seed, offset)
aero_state.dist_sample(aero_dist)

print(np.sum(aero_state.masses))

0 comments on commit d07cb89

Please sign in to comment.