68 scalar Xa = -
C*t + ts -
X0 +
x*
cos(theta) +
y*
sin(theta);
84 scalar m = newtonRapsonF1(xin,
H,
h);
87 scalar
c1 =
sin(m + (1.0 + (2.0*
H/(3.0*
h))));
103 scalar maxval = 10000.0;
111 scalar a =
x + 1.0 + 2.0*
H/(3.0*
h);
112 scalar
b = 0.5*
x*(1.0 +
H/
h);
113 scalar
c = 0.5*
x*(1.0 +
h/
H);
123 else if ((iter > 1) && (residual > maxval))
126 <<
"Newton-Raphson iterations diverging: " 127 <<
"iterations = " << iter
128 <<
", residual = " << residual
134 scalar c3 = 1.0/
sin(
b);
143 <<
"Failed to converge in " << iter <<
" iterations. Residual = " 162 scalar maxval = 10000;
170 scalar a = m*(1.0 +
x/
h);
182 else if ((iter > 1) && (residual > maxval))
185 <<
"Newton-Raphson iterations diverging: " 186 <<
"iterations = " << iter
187 <<
", residual = " << residual
193 scalar fprime = 1 -
n/c3*(
c1 -
sqr(
c2)/c3);
200 <<
"Failed to converge in " << iter <<
" iterations. Residual = " 220 const scalar mm = vec[0];
221 const scalar nn = vec[1];
224 const scalar ts = 3.5*
h/
sqrt(
H/
h);
225 const scalar Xa = -
C*t + ts -
X0 +
x*
cos(theta) +
y*
sin(theta);
227 scalar outa =
C*nn*(1.0 +
cos(mm*z/
h)*
cosh(mm*Xa/
h));
230 scalar u = outa/outb;
234 const scalar w = outa/outb;
236 const scalar v = u*
sin(waveAngle_);
264 level[paddlei] = waterDepthRef_ + tCoeff*eta;
316 setPaddlePropeties(level, facei, fraction, z);
320 const label paddlei = faceToPaddle_[facei];
334 U_[facei] = fraction*
Uf*tCoeff;
Graphite solid properties.
errorManipArg< error, int > exit(error &err, const int errNo=1)
const vector & g_
Gravity.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
constexpr char nl
The newline '\n' character (0x0a)
const dimensionedScalar c2
Second radiation constant: default SI units: [m.K].
dimensionedScalar sqrt(const dimensionedScalar &ds)
Ostream & endl(Ostream &os)
Add newline and flush stream.
virtual scalar newtonRapsonF2(const scalar x0, const scalar H, const scalar h, const scalar xa, const scalar m, const scalar n) const
Macros for easy insertion into run-time selection tables.
McCowan(const dictionary &dict, const fvMesh &mesh, const polyPatch &patch, const bool readFields=true)
Constructor.
#define forAll(list, i)
Loop across all elements in list.
defineTypeNameAndDebug(waveAbsorptionModel, 0)
virtual vector mn(const scalar H, const scalar h) const
dimensionedScalar cos(const dimensionedScalar &ds)
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const NameMatchPredicate &selectedFields, DynamicList< regIOobject *> &storedObjects)
Read the selected GeometricFields of the templated type and store on the objectRegistry.
const dimensionedScalar b
Wien displacement law constant: default SI units: [m.K].
virtual scalar newtonRapsonF1(const scalar x0, const scalar H, const scalar h) const
autoPtr< surfaceVectorField > Uf
InfoProxy< IOobject > info() const noexcept
Return info proxy, for printing information to a stream.
dimensionedScalar sin(const dimensionedScalar &ds)
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
OBJstream os(runTime.globalPath()/outputName)
virtual vector Uf(const scalar H, const scalar h, const scalar x, const scalar y, const scalar theta, const scalar t, const scalar X0, const scalar z) const
Wave velocity.
const Vector< label > N(dict.get< Vector< label >>("N"))
virtual bool readDict(const dictionary &overrideDict)
Read from dictionary.
const dimensionedScalar h
Planck constant.
scalarList X0(nSpecie, Zero)
#define WarningInFunction
Report a warning using Foam::Warning.
dimensionedScalar sinh(const dimensionedScalar &ds)
Mesh data needed to do the Finite Volume discretisation.
const dimensionedScalar c
Speed of light in a vacuum.
const std::string patch
OpenFOAM patch number as a std::string.
virtual scalar eta(const scalar H, const scalar h, const scalar x, const scalar y, const scalar theta, const scalar t, const scalar X0) const
Wave height.
const dimensionedScalar c1
First radiation constant: default SI units: [W/m2].
addToRunTimeSelectionTable(waveModel, shallowWaterAbsorption, patch)
dimensionedScalar cosh(const dimensionedScalar &ds)
A patch is a list of labels that address the faces in the global face list.
dimensionedScalar tan(const dimensionedScalar &ds)
volScalarField H(IOobject("H", runTime.timeName(), mesh.thisDb(), IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, dimensionedScalar(dimLength, Zero))
virtual bool readDict(const dictionary &overrideDict)
Read from dictionary.
virtual void setLevel(const scalar t, const scalar tCoeff, scalarField &level) const
Set the water level.
virtual void setVelocity(const scalar t, const scalar tCoeff, const scalarField &level)
Calculate the wave model velocity.