Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 32 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,38 @@ jobs:
run: poetry run flake8 .
- name: Run tests
run: poetry run pytest
- name: Convert air mechanism
run: poetry run convert -f ${{github.workspace}}/Mechanisms/air/mechanism.yaml
- name: Convert LiDryer mechanism
run: poetry run convert -f ${{github.workspace}}/Mechanisms/LiDryer/mechanism.yaml
- name: Convert regular mechanisms
continue-on-error: true
run: |
if [ "${{matrix.python-version}}" == '3.10' ]; then
poetry run convert -l ${{github.workspace}}/Mechanisms/list_mech
# Fail if there are diffs to the committed mechanisms
git diff --exit-code
# Also fail if there are any uncommitted or untracked changes
if [ -n "$(git status --porcelain=v1)" ]; then
echo "Uncommitted changes (including untracked files) detected after mechanism conversion:"
git status
exit 1
fi
else
poetry run convert -f ${{github.workspace}}/Mechanisms/air/mechanism.yaml
poetry run convert -f ${{github.workspace}}/Mechanisms/LiDryer/mechanism.yaml
fi
- name: Convert QSS mechanisms
continue-on-error: true
run: |
if [ "${{matrix.python-version}}" == '3.10' ]; then
poetry run qssa -lq ${{github.workspace}}/Mechanisms/list_qss_mech
poetry run convert -lq ${{github.workspace}}/Mechanisms/list_qss_mech
# Fail if there are diffs to the committed mechanisms
git diff --exit-code
# Also fail if there are any uncommitted or untracked changes
if [ -n "$(git status --porcelain=v1)" ]; then
echo "Uncommitted changes (including untracked files) detected after mechanism conversion:"
git status
exit 1
fi
fi

Transport-EOS-Reactions:
needs: Formatting
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ dodecane_wang.cpp_opt3
drm19.cpp_OK
callgrind.out*
.ccls-cache
poetry.lock

# AMReX build directories
d/
Expand Down
299 changes: 294 additions & 5 deletions Mechanisms/C3MechLite/1_000atm/mechanism.H
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,7 @@
#define NUM_FIT 4

// ALWAYS on CPU stuff -- can have different def depending on if we are CPU or
// GPU based. Defined in mechanism.cpp
void atomicWeight(amrex::Real* awt);
// MISC
void CKAWT(amrex::Real* awt);
void CKNCF(int* ncf);
// GPU based. Defined in mechanism.cpp MISC
void CKSYME_STR(amrex::Vector<std::string>& ename);
void CKSYMS_STR(amrex::Vector<std::string>& kname);
void GET_RMAP(int* _rmap);
Expand Down Expand Up @@ -137,6 +133,299 @@ CKINDX(int& mm, int& kk, int& ii, int& nfit)
nfit = -1; // Why do you need this anyway ?
}

// save atomic weights into array
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void
atomicWeight(amrex::Real* awt)
{
awt[0] = 12.011000; // C
awt[1] = 1.008000; // H
awt[2] = 14.007000; // N
awt[3] = 15.999000; // O
awt[4] = 39.950000; // Ar
awt[5] = 4.002602; // He
}

// get atomic weight for all elements
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void
CKAWT(amrex::Real* awt)
{
atomicWeight(awt);
}

// Returns the elemental composition
// of the speciesi (mdim is num of elements)
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void
CKNCF(int* ncf)
{
int kd = 6;
// Zero ncf
for (int id = 0; id < kd * 61; ++id) {
ncf[id] = 0;
}

// HE
ncf[0 * kd + 5] = 1; // He

// H2
ncf[1 * kd + 1] = 2; // H

// H
ncf[2 * kd + 1] = 1; // H

// O
ncf[3 * kd + 3] = 1; // O

// OH
ncf[4 * kd + 1] = 1; // H
ncf[4 * kd + 3] = 1; // O

// H2O
ncf[5 * kd + 1] = 2; // H
ncf[5 * kd + 3] = 1; // O

// O2
ncf[6 * kd + 3] = 2; // O

// N2
ncf[7 * kd + 2] = 2; // N

// AR
ncf[8 * kd + 4] = 1; // Ar

// H2O2
ncf[9 * kd + 1] = 2; // H
ncf[9 * kd + 3] = 2; // O

// HO2
ncf[10 * kd + 1] = 1; // H
ncf[10 * kd + 3] = 2; // O

// NH3
ncf[11 * kd + 1] = 3; // H
ncf[11 * kd + 2] = 1; // N

// NH2
ncf[12 * kd + 1] = 2; // H
ncf[12 * kd + 2] = 1; // N

// NO2
ncf[13 * kd + 2] = 1; // N
ncf[13 * kd + 3] = 2; // O

// HONO
ncf[14 * kd + 1] = 1; // H
ncf[14 * kd + 2] = 1; // N
ncf[14 * kd + 3] = 2; // O

// NH
ncf[15 * kd + 1] = 1; // H
ncf[15 * kd + 2] = 1; // N

// N
ncf[16 * kd + 2] = 1; // N

// HNO
ncf[17 * kd + 1] = 1; // H
ncf[17 * kd + 2] = 1; // N
ncf[17 * kd + 3] = 1; // O

// NO
ncf[18 * kd + 2] = 1; // N
ncf[18 * kd + 3] = 1; // O

// H2NO
ncf[19 * kd + 1] = 2; // H
ncf[19 * kd + 2] = 1; // N
ncf[19 * kd + 3] = 1; // O

// NNH
ncf[20 * kd + 1] = 1; // H
ncf[20 * kd + 2] = 2; // N

// N2O
ncf[21 * kd + 2] = 2; // N
ncf[21 * kd + 3] = 1; // O

// N2H2
ncf[22 * kd + 1] = 2; // H
ncf[22 * kd + 2] = 2; // N

// N2H3
ncf[23 * kd + 1] = 3; // H
ncf[23 * kd + 2] = 2; // N

// N2H4
ncf[24 * kd + 1] = 4; // H
ncf[24 * kd + 2] = 2; // N

// CO2
ncf[25 * kd + 0] = 1; // C
ncf[25 * kd + 3] = 2; // O

// CO
ncf[26 * kd + 0] = 1; // C
ncf[26 * kd + 3] = 1; // O

// CH4
ncf[27 * kd + 0] = 1; // C
ncf[27 * kd + 1] = 4; // H

// CH3
ncf[28 * kd + 0] = 1; // C
ncf[28 * kd + 1] = 3; // H

// CH3O2
ncf[29 * kd + 0] = 1; // C
ncf[29 * kd + 1] = 3; // H
ncf[29 * kd + 3] = 2; // O

// CH3O2H
ncf[30 * kd + 0] = 1; // C
ncf[30 * kd + 1] = 4; // H
ncf[30 * kd + 3] = 2; // O

// CH2
ncf[31 * kd + 0] = 1; // C
ncf[31 * kd + 1] = 2; // H

// HCO
ncf[32 * kd + 0] = 1; // C
ncf[32 * kd + 1] = 1; // H
ncf[32 * kd + 3] = 1; // O

// CH2O
ncf[33 * kd + 0] = 1; // C
ncf[33 * kd + 1] = 2; // H
ncf[33 * kd + 3] = 1; // O

// C2H4
ncf[34 * kd + 0] = 2; // C
ncf[34 * kd + 1] = 4; // H

// CH3O
ncf[35 * kd + 0] = 1; // C
ncf[35 * kd + 1] = 3; // H
ncf[35 * kd + 3] = 1; // O

// CH2O2H
ncf[36 * kd + 0] = 1; // C
ncf[36 * kd + 1] = 3; // H
ncf[36 * kd + 3] = 2; // O

// CH3OH
ncf[37 * kd + 0] = 1; // C
ncf[37 * kd + 1] = 4; // H
ncf[37 * kd + 3] = 1; // O

// C2H5
ncf[38 * kd + 0] = 2; // C
ncf[38 * kd + 1] = 5; // H

// C2H6
ncf[39 * kd + 0] = 2; // C
ncf[39 * kd + 1] = 6; // H

// C2H3
ncf[40 * kd + 0] = 2; // C
ncf[40 * kd + 1] = 3; // H

// CH2CHO
ncf[41 * kd + 0] = 2; // C
ncf[41 * kd + 1] = 3; // H
ncf[41 * kd + 3] = 1; // O

// CH2CO
ncf[42 * kd + 0] = 2; // C
ncf[42 * kd + 1] = 2; // H
ncf[42 * kd + 3] = 1; // O

// C2H2
ncf[43 * kd + 0] = 2; // C
ncf[43 * kd + 1] = 2; // H

// CH2OH
ncf[44 * kd + 0] = 1; // C
ncf[44 * kd + 1] = 3; // H
ncf[44 * kd + 3] = 1; // O

// C2H5O2
ncf[45 * kd + 0] = 2; // C
ncf[45 * kd + 1] = 5; // H
ncf[45 * kd + 3] = 2; // O

// C2H5O2H
ncf[46 * kd + 0] = 2; // C
ncf[46 * kd + 1] = 6; // H
ncf[46 * kd + 3] = 2; // O

// C2H5O
ncf[47 * kd + 0] = 2; // C
ncf[47 * kd + 1] = 5; // H
ncf[47 * kd + 3] = 1; // O

// CH3CHO
ncf[48 * kd + 0] = 2; // C
ncf[48 * kd + 1] = 4; // H
ncf[48 * kd + 3] = 1; // O

// HCCO
ncf[49 * kd + 0] = 2; // C
ncf[49 * kd + 1] = 1; // H
ncf[49 * kd + 3] = 1; // O

// C3H8
ncf[50 * kd + 0] = 3; // C
ncf[50 * kd + 1] = 8; // H

// NC3H7
ncf[51 * kd + 0] = 3; // C
ncf[51 * kd + 1] = 7; // H

// H2CN
ncf[52 * kd + 0] = 1; // C
ncf[52 * kd + 1] = 2; // H
ncf[52 * kd + 2] = 1; // N

// CH3NO2
ncf[53 * kd + 0] = 1; // C
ncf[53 * kd + 1] = 3; // H
ncf[53 * kd + 2] = 1; // N
ncf[53 * kd + 3] = 2; // O

// NC3H7O2
ncf[54 * kd + 0] = 3; // C
ncf[54 * kd + 1] = 7; // H
ncf[54 * kd + 3] = 2; // O

// IC3H7
ncf[55 * kd + 0] = 3; // C
ncf[55 * kd + 1] = 7; // H

// C3H6
ncf[56 * kd + 0] = 3; // C
ncf[56 * kd + 1] = 6; // H

// C3H6OOH1-3
ncf[57 * kd + 0] = 3; // C
ncf[57 * kd + 1] = 7; // H
ncf[57 * kd + 3] = 2; // O

// C3H6OOH1-3O2
ncf[58 * kd + 0] = 3; // C
ncf[58 * kd + 1] = 7; // H
ncf[58 * kd + 3] = 4; // O

// OCHCH2CH2O
ncf[59 * kd + 0] = 3; // C
ncf[59 * kd + 1] = 5; // H
ncf[59 * kd + 3] = 2; // O

// C3KET13
ncf[60 * kd + 0] = 3; // C
ncf[60 * kd + 1] = 6; // H
ncf[60 * kd + 3] = 3; // O
}

// inverse molecular weights
#ifdef AMREX_USE_GPU
AMREX_GPU_CONSTANT const amrex::Real global_imw[61] = {
Expand Down
Loading
Loading