/// <summary> /// returns /// \f[ /// \vec{v} \cdot \phi, /// \f] /// where \f$ \vec{v}\f$ is the linearization point. /// </summary> protected override void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { double u = inp.Parameters[0]; double v = inp.Parameters[1]; output[0] = u * U[0]; output[1] = v * U[0]; if (m_SpatialDimension == 3) { double w = inp.Parameters[2]; output[2] = w * U[0]; } if (m_bcmap.PhysMode == PhysicsMode.LowMach) { double rho = EoS.GetDensity(inp.Parameters[2 * m_SpatialDimension]); for (int d = 0; d < m_SpatialDimension; d++) { output[d] *= rho; } } if (m_bcmap.PhysMode == PhysicsMode.Combustion) { double[] args = new double[NumberOfReactants + 1]; for (int n = 0; n < NumberOfReactants + 1; n++) { args[n] = inp.Parameters[2 * m_SpatialDimension + n]; } double rho = EoS.GetDensity(args); for (int d = 0; d < m_SpatialDimension; d++) { output[d] *= rho; } } }
protected override void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { int D = output.Length; Array.Clear(output, 0, D); switch (Bcmap.PhysMode) { case PhysicsMode.Incompressible: output[Component] = U[0]; break; case PhysicsMode.LowMach: case PhysicsMode.Multiphase: output[Component] = EoS.GetDensity(inp.Parameters[0]) * U[0]; break; case PhysicsMode.Combustion: output[Component] = EoS.GetDensity(inp.Parameters) * U[0]; break; default: throw new ApplicationException("PhysicsMode not implemented"); } }
void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { int D = output.Length; Array.Clear(output, 0, D); double[] DensityArguments; // Arguments used to calculate the density with the EoS switch (Bcmap.PhysMode) { case PhysicsMode.Incompressible: output[Component] = U[Component]; break; case PhysicsMode.MixtureFraction: output[Component] = EoS.getDensityFromZ(U[inp.D]) * U[Component]; break; case PhysicsMode.LowMach: case PhysicsMode.Multiphase: DensityArguments = U.GetSubVector(m_SpatialDimension, 1); output[Component] = EoS.GetDensity(DensityArguments) * U[Component]; break; case PhysicsMode.Combustion: DensityArguments = U.GetSubVector(m_SpatialDimension, NumberOfSpecies); //MassFraction4 does not exist as a variable, because it is just calculated at the end of each iteration output[Component] = EoS.GetDensity(DensityArguments) * U[Component]; break; default: throw new ApplicationException("PhysicsMode not implemented"); } }
/// <summary> /// returns /// \f[ /// \vec{v} \cdot \phi, /// \f] /// where \f$ \vec{v}\f$ is the linearization point. /// </summary> void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { double u = U[0]; double v = U[1]; output[0] = u * U[argumentIndex]; output[1] = v * U[argumentIndex]; if (m_SpatialDimension == 3) { double w = U[2]; output[2] = w * U[argumentIndex]; } double rho; switch (m_bcmap.PhysMode) { case PhysicsMode.Incompressible: rho = 1.0; break; case PhysicsMode.MixtureFraction: rho = EoS.getDensityFromZ(U[inp.D]); break; case PhysicsMode.LowMach: double[] DensityArguments = U.GetSubVector(m_SpatialDimension, 1); rho = EoS.GetDensity(DensityArguments); break; case PhysicsMode.Combustion: double[] DensityArguments2 = U.GetSubVector(m_SpatialDimension, NumberOfReactants); // T, Y0,Y1,Y2 rho = EoS.GetDensity(DensityArguments2); break; default: throw new NotImplementedException("not implemented physics mode"); } for (int d = 0; d < m_SpatialDimension; d++) { output[d] *= rho; } for (int d = 0; d < m_SpatialDimension; d++) { if (double.IsNaN(output[d])) { throw new NotFiniteNumberException(); } } }
/// <summary> /// Volume integrand of the SIP /// </summary> public double VolumeForm(ref Foundation.CommonParamsVol cpv, double[] U, double[,] GradU, double V, double[] GradV) { double acc = 0; for (int d = 0; d < cpv.D; d++) { acc -= GradU[0, d] * GradV[d] * this.Nu(cpv.Xglobal, cpv.Parameters, cpv.jCell) * this.m_alpha; } return(acc); }
public override double VolumeForm(ref Foundation.CommonParamsVol cpv, double[] U, double[,] GradU, double V, double[] GradV) { double acc = 0; for (int d = 0; d < cpv.D; d++) { acc -= GradU[d, d] * GradV[base.m_iComp] * Viscosity(cpv.Parameters) * base.m_alpha; } return(acc * (2.0 / 3.0)); }
//public override IList<string> ArgumentOrdering //{ // get // { // return new string[] { VariableNames.Velocity_d(m_iComp) }; // } //} public override double VolumeForm(ref Foundation.CommonParamsVol cpv, double[] U, double[,] GradU, double V, double[] GradV) { double acc = 0; for (int d = 0; d < cpv.D; d++) { //acc -= GradU[0, d] * GradV[d] * Viscosity(cpv.Parameters) * base.m_alpha; acc -= GradU[m_iComp, d] * GradV[d] * Viscosity(cpv.Parameters) * base.m_alpha; } return(-acc); }
public double VolumeForm(ref Foundation.CommonParamsVol cpv, double[] U, double[,] GradU, double V, double[] GradV) { double Acc = 0; for (int d = 0; d < m_D; d++) { Acc += U[d] * GradV[d]; } return(-Acc); }
/// <summary> /// returns /// \f[ /// \vec{v} \cdot \phi, /// \f] /// where \f$ \vec{v}\f$ is the linearization point. /// </summary> protected void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { for (int i = 0; i < m_SpatialDimension; ++i) { output[i] = U[i] * GetScalar(U); if (double.IsNaN(output[i])) { throw new NotFiniteNumberException(); } } }
public override double VolumeForm(ref Foundation.CommonParamsVol cpv, double[] U, double[,] GradU, double V, double[] GradV) { double acc = 0; for (int d = 0; d < cpv.D; d++) { // we want to: // sum( \partial_{m_iComp} u_d * \partial_{d} v, d=0..D-1) acc += GradU[d, base.m_iComp] * GradV[d] * Viscosity(cpv.Parameters) * base.m_alpha; } return(acc); }
public double VolumeForm(ref Foundation.CommonParamsVol cpv, double[] U, double[,] GradU, double V, double[] GradV) { double acc = 0; for (int d = 0; d < cpv.D; d++) { acc += GradU[0, d] * GradV[d] * Viscosity; } acc -= rhs(cpv.Xglobal, cpv.time) * V; return(acc); }
public double VolumeForm(ref Foundation.CommonParamsVol cpv, double[] U, double[,] GradU, double V, double[] GradV) { double acc = 0; for (int d = 0; d < cpv.D; d++) { acc -= GradU[0, d] * GradV[d]; } if (acc != 0.0) { acc *= Conductivity(cpv.Parameters) * this.m_alpha; } return(-acc); }
protected override void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { double rho = EoS.GetDensity(inp.Parameters[2 * SpatDimension]); double Temp = U[0]; double u_1 = inp.Parameters[0]; double u_2 = inp.Parameters[1]; output[0] = rho * Temp * u_1; output[1] = rho * Temp * u_2; if (SpatDimension == 3) { double u_3 = inp.Parameters[2]; output[2] = rho * Temp * u_3; } }
protected override void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { base.Flux(ref inp, U, output); //switch (m_varMode) { // case EquationAndVarMode.u_p: // BLAS.dscal(output.Length, oneOverRho, output, 1); // break; // case EquationAndVarMode.u_p_2: // case EquationAndVarMode.mom_p: // case EquationAndVarMode.u_Psi: // // nop // break; // default: // throw new NotImplementedException(); //} }
/// <summary> /// returns /// \f[ /// \vec{v} \cdot \phi, /// \f] /// where \f$ \vec{v}\f$ is the linearization point. /// </summary> protected override void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { double u = inp.Parameters[0]; double v = inp.Parameters[1]; output[0] = u * U[0]; output[1] = v * U[0]; if (m_SpatialDimension == 3) { double w = inp.Parameters[2]; output[2] = w * U[0]; } if (m_bcmap.PhysMode == PhysicsMode.LowMach) { double rho = EoS.GetDensity(inp.Parameters[2 * m_SpatialDimension]); for (int d = 0; d < m_SpatialDimension; d++) { output[d] *= rho; } } }
protected override void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { output[0] = -alpha * U[0]; }
protected override void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { output[0] = U[0] * m_factor; }
abstract public double VolumeForm(ref Foundation.CommonParamsVol cpv, double[] U, double[,] GradU, double V, double[] GradV);
protected override void Flux(ref Foundation.CommonParamsVol inp, double[] U, double[] output) { base.Flux(ref inp, U, output); output.ScaleV(cap); }