Skip to content

Commit 35db69f

Browse files
committed
MFsurfchem - add mean_MFsurfchem to calculate adsorption and desorption rates with equilibrium values
1 parent 3ffd147 commit 35db69f

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

src_MFsurfchem/MFsurfchem_functions.cpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ AMREX_GPU_MANAGED amrex::Real MFsurfchem::e_beta;
1919
AMREX_GPU_MANAGED int MFsurfchem::splitting_MFsurfchem;
2020
AMREX_GPU_MANAGED int MFsurfchem::conversion_MFsurfchem;
2121

22+
AMREX_GPU_MANAGED int MFsurfchem::mean_MFsurfchem;
23+
AMREX_GPU_MANAGED GpuArray<amrex::Real, MAX_SPECIES> MFsurfchem::mean_pressure;
24+
2225
void InitializeMFSurfchemNamespace()
2326
{
2427
// extract inputs parameters
@@ -87,6 +90,15 @@ void InitializeMFSurfchemNamespace()
8790
if ( (n_ads_spec + conversion_MFsurfchem) > nspecies) {
8891
Abort("ERROR: desorption species is not included in nspecies");
8992
}
93+
94+
// Use equilibrium (mean) values of pressure and temperature to calculate adsorption rate
95+
mean_MFsurfchem = 0; // default value
96+
pp.query("mean_MFsurfchem",mean_MFsurfchem);
97+
if (mean_MFsurfchem) {
98+
std::vector<amrex::Real> mean_pressure_tmp(MAX_SPECIES);
99+
pp.queryarr("mean_pressure",mean_pressure_tmp,0,n_ads_spec); // mean partial pressure of adsorption species
100+
for (int m=0;m<n_ads_spec;m++) mean_pressure[m] = mean_pressure_tmp[m];
101+
}
90102
return;
91103
}
92104

@@ -172,8 +184,17 @@ void sample_MFsurfchem(MultiFab& cu, MultiFab& prim, MultiFab& surfcov, MultiFab
172184

173185
amrex::Real theta = surfcov_arr(i,j,k,m);
174186

175-
amrex::Real meanNads = ads_rate_const[m]*pres*(1-sumtheta)*Ntot*dt*pow(tempratio,k_beta);
176-
amrex::Real meanNdes = des_rate[m]*theta*Ntot*dt;
187+
amrex::Real meanNads;
188+
amrex::Real meanNdes;
189+
190+
if (mean_MFsurfchem==0) {
191+
meanNads = ads_rate_const[m]*pres*(1-sumtheta)*Ntot*dt*pow(tempratio,k_beta);
192+
meanNdes = des_rate[m]*theta*Ntot*dt;
193+
}
194+
else {
195+
meanNads = ads_rate_const[m]*mean_pressure[m]*(1-sumtheta)*Ntot*dt; // tempratio = 1
196+
meanNdes = des_rate[m]*theta*Ntot*dt;
197+
}
177198

178199
amrex::Real Nads;
179200
amrex::Real Ndes;

src_MFsurfchem/MFsurfchem_namespace.H

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,7 @@ namespace MFsurfchem {
1818
extern AMREX_GPU_MANAGED int splitting_MFsurfchem;
1919
extern AMREX_GPU_MANAGED int conversion_MFsurfchem;
2020

21+
extern AMREX_GPU_MANAGED int mean_MFsurfchem;
22+
extern AMREX_GPU_MANAGED GpuArray<amrex::Real, MAX_SPECIES> mean_pressure;
23+
2124
}

0 commit comments

Comments
 (0)