mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Corrected multiRegionHeater tutorial.
This commit is contained in:
@ -60,7 +60,7 @@ class magnet
|
||||
// Private data
|
||||
|
||||
word name_;
|
||||
scalar relativPermeability_;
|
||||
scalar relativePermeability_;
|
||||
dimensionedScalar remanence_;
|
||||
vector orientation_;
|
||||
|
||||
@ -85,7 +85,7 @@ public:
|
||||
)
|
||||
:
|
||||
name_(name),
|
||||
relativPermeability_(mur),
|
||||
relativePermeability_(mur),
|
||||
remanence_("Mr", dimensionSet(0, -1, 0, 0, 0, 1, 0), Mr),
|
||||
orientation_(orientation)
|
||||
{}
|
||||
@ -111,7 +111,7 @@ public:
|
||||
//- Return relative permeability
|
||||
inline scalar mur() const
|
||||
{
|
||||
return relativPermeability_;
|
||||
return relativePermeability_;
|
||||
}
|
||||
|
||||
//- Return remenance
|
||||
@ -133,7 +133,7 @@ public:
|
||||
{
|
||||
is.readBegin("magnet");
|
||||
is >> m.name_
|
||||
>> m.relativPermeability_
|
||||
>> m.relativePermeability_
|
||||
>> m.remanence_.value()
|
||||
>> m.orientation_;
|
||||
is.readEnd("magnet");
|
||||
@ -148,7 +148,7 @@ public:
|
||||
{
|
||||
os << token::BEGIN_LIST
|
||||
<< m.name_ << token::SPACE
|
||||
<< m.relativPermeability_ << token::SPACE
|
||||
<< m.relativePermeability_ << token::SPACE
|
||||
<< m.remanence_.value()
|
||||
<< m.orientation_
|
||||
<< token::END_LIST;
|
||||
|
||||
@ -29,7 +29,8 @@ Description
|
||||
|
||||
A Poisson's equation for the magnetic scalar potential psi is solved
|
||||
from which the magnetic field intensity H and magnetic flux density B
|
||||
are obtained.
|
||||
are obtained. The paramagnetic particle force field (H dot grad(H))
|
||||
is optionally available.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
@ -42,8 +43,23 @@ Description
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
argList::addBoolOption("noH", "do not write the magnetic field");
|
||||
argList::addBoolOption("noB", "do not write the magnetic field");
|
||||
argList::addBoolOption
|
||||
(
|
||||
"noH",
|
||||
"do not write the magnetic field intensity field"
|
||||
);
|
||||
|
||||
argList::addBoolOption
|
||||
(
|
||||
"noB",
|
||||
"do not write the magnetic flux density field"
|
||||
);
|
||||
|
||||
argList::addBoolOption
|
||||
(
|
||||
"HdotGradH",
|
||||
"write the paramagnetic particle force field"
|
||||
);
|
||||
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
@ -64,10 +80,8 @@ int main(int argc, char *argv[])
|
||||
|
||||
psi.write();
|
||||
|
||||
if (!args.optionFound("noH"))
|
||||
if (!args.optionFound("noH") || args.optionFound("HdotGradH"))
|
||||
{
|
||||
Info<< nl
|
||||
<< "Creating field H for time " << runTime.timeName() << endl;
|
||||
volVectorField H
|
||||
(
|
||||
IOobject
|
||||
@ -79,13 +93,42 @@ int main(int argc, char *argv[])
|
||||
fvc::reconstruct(fvc::snGrad(psi)*mesh.magSf())
|
||||
);
|
||||
|
||||
H.write();
|
||||
if (!args.optionFound("noH"))
|
||||
{
|
||||
Info<< nl
|
||||
<< "Creating field H for time "
|
||||
<< runTime.timeName() << endl;
|
||||
|
||||
H.write();
|
||||
}
|
||||
|
||||
if (args.optionFound("HdotGradH"))
|
||||
{
|
||||
Info<< nl
|
||||
<< "Creating field HdotGradH for time "
|
||||
<< runTime.timeName() << endl;
|
||||
|
||||
volVectorField HdotGradH
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"HdotGradH",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
H & fvc::grad(H)
|
||||
);
|
||||
|
||||
HdotGradH.write();
|
||||
}
|
||||
}
|
||||
|
||||
if (!args.optionFound("noB"))
|
||||
{
|
||||
Info<< nl
|
||||
<< "Creating field B for time " << runTime.timeName() << endl;
|
||||
<< "Creating field B for time "
|
||||
<< runTime.timeName() << endl;
|
||||
|
||||
volVectorField B
|
||||
(
|
||||
IOobject
|
||||
|
||||
@ -64,13 +64,13 @@ namespace Foam
|
||||
|
||||
|
||||
// Hack to do zones which have Lists in them. See above.
|
||||
bool writeZones(const word& name, Time& runTime)
|
||||
bool writeZones(const word& name, const fileName& meshDir, Time& runTime)
|
||||
{
|
||||
IOobject io
|
||||
(
|
||||
name,
|
||||
runTime.timeName(),
|
||||
polyMesh::meshSubDir,
|
||||
meshDir,
|
||||
runTime,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE,
|
||||
@ -144,8 +144,20 @@ bool writeZones(const word& name, Time& runTime)
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
timeSelector::addOptions();
|
||||
# include "addRegionOption.H"
|
||||
# include "setRootCase.H"
|
||||
# include "createTime.H"
|
||||
|
||||
fileName meshDir = polyMesh::meshSubDir;
|
||||
fileName regionPrefix = "";
|
||||
word regionName = polyMesh::defaultRegion;
|
||||
if (args.optionReadIfPresent("region", regionName))
|
||||
{
|
||||
Info<< "Using region " << regionName << nl << endl;
|
||||
regionPrefix = regionName;
|
||||
meshDir = regionName/polyMesh::meshSubDir;
|
||||
}
|
||||
|
||||
Foam::instantList timeDirs = Foam::timeSelector::select0(runTime, args);
|
||||
|
||||
forAll(timeDirs, timeI)
|
||||
@ -154,27 +166,32 @@ int main(int argc, char *argv[])
|
||||
Info<< "Time = " << runTime.timeName() << endl;
|
||||
|
||||
// Convert all the standard mesh files
|
||||
writeMeshObject<cellIOList>("cells", runTime);
|
||||
writeMeshObject<labelIOList>("owner", runTime);
|
||||
writeMeshObject<labelIOList>("neighbour", runTime);
|
||||
writeMeshObject<faceIOList>("faces", runTime);
|
||||
writeMeshObject<pointIOField>("points", runTime);
|
||||
writeMeshObject<labelIOList>("pointProcAddressing", runTime);
|
||||
writeMeshObject<labelIOList>("faceProcAddressing", runTime);
|
||||
writeMeshObject<labelIOList>("cellProcAddressing", runTime);
|
||||
writeMeshObject<labelIOList>("boundaryProcAddressing", runTime);
|
||||
writeMeshObject<cellIOList>("cells", meshDir, runTime);
|
||||
writeMeshObject<labelIOList>("owner", meshDir, runTime);
|
||||
writeMeshObject<labelIOList>("neighbour", meshDir, runTime);
|
||||
writeMeshObject<faceIOList>("faces", meshDir, runTime);
|
||||
writeMeshObject<pointIOField>("points", meshDir, runTime);
|
||||
writeMeshObject<labelIOList>("pointProcAddressing", meshDir, runTime);
|
||||
writeMeshObject<labelIOList>("faceProcAddressing", meshDir, runTime);
|
||||
writeMeshObject<labelIOList>("cellProcAddressing", meshDir, runTime);
|
||||
writeMeshObject<labelIOList>
|
||||
(
|
||||
"boundaryProcAddressing",
|
||||
meshDir,
|
||||
runTime
|
||||
);
|
||||
|
||||
if (runTime.writeFormat() == IOstream::ASCII)
|
||||
{
|
||||
// Only do zones when converting from binary to ascii
|
||||
// The other way gives problems since working on dictionary level.
|
||||
writeZones("cellZones", runTime);
|
||||
writeZones("faceZones", runTime);
|
||||
writeZones("pointZones", runTime);
|
||||
writeZones("cellZones", meshDir, runTime);
|
||||
writeZones("faceZones", meshDir, runTime);
|
||||
writeZones("pointZones", meshDir, runTime);
|
||||
}
|
||||
|
||||
// Get list of objects from the database
|
||||
IOobjectList objects(runTime, runTime.timeName());
|
||||
IOobjectList objects(runTime, runTime.timeName(), regionPrefix);
|
||||
|
||||
forAllConstIter(IOobjectList, objects, iter)
|
||||
{
|
||||
|
||||
@ -40,13 +40,18 @@ namespace Foam
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class T>
|
||||
inline bool writeMeshObject(const word& name, Time& runTime)
|
||||
inline bool writeMeshObject
|
||||
(
|
||||
const word& name,
|
||||
const fileName& meshDir,
|
||||
Time& runTime
|
||||
)
|
||||
{
|
||||
IOobject io
|
||||
(
|
||||
name,
|
||||
runTime.timeName(),
|
||||
polyMesh::meshSubDir,
|
||||
meshDir,
|
||||
runTime,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE,
|
||||
|
||||
@ -96,7 +96,7 @@ case OpenFOAM:
|
||||
set gcc_version=gcc-4.5.0
|
||||
set gmp_version=gmp-5.0.1
|
||||
set mpfr_version=mpfr-2.4.2
|
||||
set mpc_version=mpc-2.4.2
|
||||
set mpc_version=mpc-0.8.1
|
||||
breaksw
|
||||
case Gcc44:
|
||||
set gcc_version=gcc-4.4.3
|
||||
@ -121,7 +121,10 @@ case OpenFOAM:
|
||||
set gccDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$gcc_version
|
||||
set gmpDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$gmp_version
|
||||
set mpfrDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$mpfr_version
|
||||
set mpcDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$mpc_version
|
||||
|
||||
if ( $?mpc_version ) then
|
||||
set mpcDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$mpc_version
|
||||
endif
|
||||
|
||||
# Check that the compiler directory can be found
|
||||
if ( ! -d "$gccDir" ) then
|
||||
|
||||
@ -75,7 +75,7 @@ inline Foam::KinematicParcel<ParcelType>::KinematicParcel
|
||||
)
|
||||
:
|
||||
Particle<ParcelType>(owner, position, cellI),
|
||||
active_(false),
|
||||
active_(true),
|
||||
typeId_(owner.parcelTypeId()),
|
||||
nParticle_(0),
|
||||
d_(0.0),
|
||||
|
||||
@ -83,7 +83,7 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel
|
||||
{
|
||||
is.read
|
||||
(
|
||||
reinterpret_cast<char*>(&typeId_),
|
||||
reinterpret_cast<char*>(&active_),
|
||||
sizeof(active_)
|
||||
+ sizeof(typeId_)
|
||||
+ sizeof(nParticle_)
|
||||
|
||||
@ -101,10 +101,10 @@ Foam::sixDoFRigidBodyMotionRestraints::linearAxialAngularSpring::restrain
|
||||
|
||||
// Removing any axis component from oldDir and newDir and normalising
|
||||
oldDir -= (axis_ & oldDir)*axis_;
|
||||
oldDir /= mag(oldDir);
|
||||
oldDir /= (mag(oldDir) + VSMALL);
|
||||
|
||||
newDir -= (axis_ & newDir)*axis_;
|
||||
newDir /= mag(newDir);
|
||||
newDir /= (mag(newDir) + VSMALL);
|
||||
|
||||
scalar theta = mag(acos(min(oldDir & newDir, 1.0)));
|
||||
|
||||
|
||||
@ -86,7 +86,7 @@ void Foam::sixDoFRigidBodyMotionRestraints::linearSpring::restrain
|
||||
scalar magR = mag(r);
|
||||
|
||||
// r is now the r unit vector
|
||||
r /= magR;
|
||||
r /= (magR + VSMALL);
|
||||
|
||||
vector v = motion.currentVelocity(restraintPosition);
|
||||
|
||||
|
||||
@ -103,10 +103,10 @@ Foam::sixDoFRigidBodyMotionRestraints::tabulatedAxialAngularSpring::restrain
|
||||
|
||||
// Removing any axis component from oldDir and newDir and normalising
|
||||
oldDir -= (axis_ & oldDir)*axis_;
|
||||
oldDir /= mag(oldDir);
|
||||
oldDir /= (mag(oldDir) + VSMALL);
|
||||
|
||||
newDir -= (axis_ & newDir)*axis_;
|
||||
newDir /= mag(newDir);
|
||||
newDir /= (mag(newDir) + VSMALL);
|
||||
|
||||
scalar theta = mag(acos(min(oldDir & newDir, 1.0)));
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / O peration | Version: 1.6.x |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
Reference in New Issue
Block a user