Skip to content

Commit 61e376e

Browse files
authored
Merge pull request #509 from tradowsk/absorption-param-derivs
AbsorptionCoeff component derivatives
2 parents ad4e829 + 6c71986 commit 61e376e

File tree

8 files changed

+796
-72
lines changed

8 files changed

+796
-72
lines changed

src/qoi/include/grins/absorption_coeff.h

+80-5
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ namespace GRINS
8888
//! Not used
8989
virtual libMesh::UniquePtr<libMesh::FEMFunctionBase<libMesh::Real> > clone() const;
9090

91-
private:
91+
protected:
9292
//! Antioch/Cantera object
9393
SharedPtr<Chemistry> _chemistry;
9494

@@ -130,13 +130,46 @@ namespace GRINS
130130
std::vector<std::vector<libMesh::Real> > _voigt_coeffs;
131131

132132
//! Absorption coefficient [cm^-1]
133-
libMesh::Real kv(libMesh::Real P,libMesh::Real T, libMesh::Real X, libMesh::Real M);
133+
libMesh::Real kv(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
134+
135+
//! Absorption coefficient temperature derivative
136+
libMesh::Real d_kv_dT(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
137+
138+
//! Absorption coefficient pressure derivative
139+
libMesh::Real d_kv_dP(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
140+
141+
//! Absorption coefficient mass fraction derivative
142+
libMesh::Real d_kv_dY(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
143+
144+
//! Linestrength [cm^-2 atm^-1]
145+
libMesh::Real Sw(libMesh::Real T, libMesh::Real P, unsigned int i);
146+
147+
//! Linestrength temperature derivative
148+
libMesh::Real dS_dT(libMesh::Real T, libMesh::Real P, unsigned int i);
149+
150+
//! Linestrength pressure derivative
151+
libMesh::Real dS_dP(libMesh::Real T, libMesh::Real P, unsigned int i);
134152

135153
//! Doppler broadening [cm^-1]
136-
libMesh::Real nu_D(libMesh::Real nu, libMesh::Real T,libMesh::Real M);
154+
libMesh::Real nu_D(libMesh::Real T, libMesh::Real P, unsigned int i);
155+
156+
//! Doppler broadening temperature derivative
157+
libMesh::Real d_nuD_dT(libMesh::Real T, libMesh::Real P, unsigned int i);
158+
159+
//! Doppler broadening pressure derivative
160+
libMesh::Real d_nuD_dP(libMesh::Real T, unsigned int i);
137161

138162
//! Collisional broadening [cm^-1]
139-
libMesh::Real nu_C(libMesh::Real T,libMesh::Real X,libMesh::Real P,unsigned int index);
163+
libMesh::Real nu_C(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
164+
165+
//! Collisional broadening temperature derivative
166+
libMesh::Real d_nuC_dT(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
167+
168+
//! Collisional broadening pressure derivative
169+
libMesh::Real d_nuC_dP(libMesh::Real T, std::vector<libMesh::Real> Y, unsigned int i);
170+
171+
//! Collisional broadening mass fraction derivative
172+
libMesh::Real d_nuC_dY(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
140173

141174
//! Calculate the Voigt profile [cm^-1]
142175
/*!
@@ -146,11 +179,53 @@ namespace GRINS
146179
McLean A, Mitchell C, Swanston D\n
147180
Journal of Electron Spectroscopy and Related Phenomena 1994 vol: 69 (2) pp: 125-132
148181
*/
149-
libMesh::Real voigt(libMesh::Real nu_D, libMesh::Real nu_c, libMesh::Real nu);
182+
libMesh::Real voigt(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
183+
184+
//! Voigt profile temperature derivative
185+
libMesh::Real d_voigt_dT(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
186+
187+
//! Voigt profile pressure derivative
188+
libMesh::Real d_voigt_dP(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
189+
190+
//! Voigt profile mass fraction derivative
191+
libMesh::Real d_voigt_dY(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
150192

151193
//! Initialize the coeff matrix for calculating the Voigt profile
152194
void init_voigt();
153195

196+
//! Voigt a parameter
197+
libMesh::Real voigt_a(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
198+
199+
//! Voigt a parameter temperature derivative
200+
libMesh::Real d_voigt_a_dT(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
201+
202+
//! Voigt a parameter pressure derivative
203+
libMesh::Real d_voigt_a_dP(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
204+
205+
//! Voigt a parameter mass fraction derivative
206+
libMesh::Real d_voigt_a_dY(libMesh::Real T, libMesh::Real P, std::vector<libMesh::Real> Y, unsigned int i);
207+
208+
//! Voigt w parameter
209+
libMesh::Real voigt_w(libMesh::Real T, libMesh::Real P, unsigned int i);
210+
211+
//! Voigt w parameter temperature derivative
212+
libMesh::Real d_voigt_w_dT(libMesh::Real T, libMesh::Real P, unsigned int i);
213+
214+
//! Voigt w parameter pressure derivative
215+
libMesh::Real d_voigt_w_dP(libMesh::Real T, libMesh::Real P, unsigned int i);
216+
217+
//! Pressure shift of linecenter wavenumber
218+
libMesh::Real get_nu(libMesh::Real P, unsigned int i);
219+
220+
//! Derivative of pressure-shifted linecenter wavenumber
221+
libMesh::Real d_nu_dP(unsigned int i);
222+
223+
//! Mole fraction derivative with respect to mass fraction
224+
libMesh::Real dX_dY(std::vector<libMesh::Real> Y);
225+
226+
//! Partition Function derivative (finite difference)
227+
libMesh::Real dQ_dT(libMesh::Real T, unsigned int iso);
228+
154229
//! User should not call empty constructor
155230
AbsorptionCoeff();
156231
};

src/qoi/include/grins/hitran.h

+3
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ namespace GRINS
100100
//! Return the data size
101101
unsigned int get_data_size();
102102

103+
//! Finite difference derivative for partition function
104+
libMesh::Real partition_function_derivative(libMesh::Real T, unsigned int iso);
105+
103106
protected:
104107
libMesh::Real _Tmin, _Tmax, _Tstep;
105108

0 commit comments

Comments
 (0)