Integration of ihcantabria wave models
Integration of functionality produced by The Environmental Hydraulics Institute "IHCantabria" (http://www.ihcantabria.com/en/)
- Original code introduced in commit 95e9467e
- Restructured and updated by OpenCFD into a new `waveModels` library available to the interFoam family of solvers
Main source:
`$FOAM_SRC/waveModels`
Tutorials:
`$FOAM_TUTORIALS/multiphase/interFoam/waveExample*`
Capabilities include:
- Wave generation
- Solitary wave using Boussinesq theory
- Cnoidal wave theory
- StokesI, StokesII, StokesV wave theory
- Active wave absorption at the inflow/outflow boundaries based on shallow water theory
IHCantabria Authors:
- Javier Lopez Lara (jav.lopez@unican.es)
- Gabriel Barajas (barajasg@unican.es)
- Inigo Losada (losadai@unican.es)
See merge request !88
- extend the sampling concept to include surfMeshes and surfFields
for storage.
- Note the createOnRead switch in surfMeshSamplers can be desirable in
some situations to force creation of the surface faces within the
constructor.
- was using the ids coming from the zones instead of the sorted order
from ensightFaces, which led to a clash in the mesh point maps that
were manifest as a jumbled order.
BUG: missing newlines in foamToEnsight nfaced/nsided ASCII output
- was correct for foamToEnsightParts, but not for foamToEnsight
--
* Many thanks to Justin Graupman for all of his testing,
which has been a great help in isolating and fixing various issues.
ENH: reduce number of variables, simplify code
- Note: use boolList instead of scalarList for managing the face signs
since its lazy evaluation can be convenient when sign information is
not required.
Description
Replays an set of particle data based on an injectedParticleCloud,
using the assumption of one particle per parcel.
Usage
\verbatim
model1
{
type injectedParticleInjection;
SOI 0;
massTotal 0; // Place holder only
parcelBasisType fixed;
nParticle 1; // 1 particle per parcel
cloud eulerianParticleCloud;
positionOffset (-0.025 2 -0.025);
}
\endverbatim
Description
Interrogates an injectedParticleCloud to convert the raw particle
data into a set of 'binned' injectors.
The bins are set according to the particle \c tag property, from which:
- diameters are converted into \c general distributions with a
user-specified bin width
- raw velocity and diameter data are resampled and stored to provide
variations per injector
The mass to inject can be set according to the raw input data mass total
by using the \c applyDistributionMassTotal switch
Usage
\verbatim
model1
{
type injectedParticleDistributionInjection;
SOI 0;
parcelBasisType mass;
cloud eulerianParticleCloud;
positionOffset (-0.025 2 -0.025);
binWidth 0.1e-3;
parcelsPerInjector 500;
resampleSize 100; // optional
applyDistributionMassTotal yes;
// Placeholder only when using applyDistributionMassTotal
massTotal 0;
}
\endverbatim
Note
The each injector location is assumed to be operating under steady
conditions, i.e. using a constant flow rate profile
SourceFiles
InjectedParticleDistributionInjection.C
See also
Foam::injectedParticle
Foam::injectedParticleCloud
Foam::functionObjects::extractEulerianParticles
Foam::distributionModels::general
Pstream: added maxCommsSize setting to do (unstructured) parallel transfers in blocks.
Tested:
- with maxCommsSize 0 produces exactly same result as plus.develop
- compiles with label64
- with maxCommsSize e.g. 3 produces exactly same result as plus.develop
- with maxCommsSize=0 exactly the same messages (with Pstream::debug = 1) as plus.develop
See merge request !85
This is controlled by the setting maxCommsSize in etc/controlDict which
specifies the max number of bytes per exchange. If set to <= 0 it
is ignored. This max size of messages is important when doing e.g.
load balancing which can send over whole meshes.
which provided warning about backward-compatibility issue with setting div
schemes for steady-state. It caused confusion by generating incorrect warning
messages for compressible cases for which the 'bounded' should NOT be applied to
the 'div(phid,p)'.