-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
160 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# proportion | ||
H2O 1 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# proportion | ||
H2O 1 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)) |