diff --git a/applications/solvers/electromagnetics/magneticFoam/magnet.H b/applications/solvers/electromagnetics/magneticFoam/magnet.H index 9be4e6e927..765d513a74 100644 --- a/applications/solvers/electromagnetics/magneticFoam/magnet.H +++ b/applications/solvers/electromagnetics/magneticFoam/magnet.H @@ -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; diff --git a/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C b/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C index d8b23f1b89..151d17a398 100644 --- a/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C +++ b/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C @@ -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 diff --git a/applications/utilities/miscellaneous/foamFormatConvert/foamFormatConvert.C b/applications/utilities/miscellaneous/foamFormatConvert/foamFormatConvert.C index 12e04eb3e3..6a6e0cfce1 100644 --- a/applications/utilities/miscellaneous/foamFormatConvert/foamFormatConvert.C +++ b/applications/utilities/miscellaneous/foamFormatConvert/foamFormatConvert.C @@ -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("cells", runTime); - writeMeshObject("owner", runTime); - writeMeshObject("neighbour", runTime); - writeMeshObject("faces", runTime); - writeMeshObject("points", runTime); - writeMeshObject("pointProcAddressing", runTime); - writeMeshObject("faceProcAddressing", runTime); - writeMeshObject("cellProcAddressing", runTime); - writeMeshObject("boundaryProcAddressing", runTime); + writeMeshObject("cells", meshDir, runTime); + writeMeshObject("owner", meshDir, runTime); + writeMeshObject("neighbour", meshDir, runTime); + writeMeshObject("faces", meshDir, runTime); + writeMeshObject("points", meshDir, runTime); + writeMeshObject("pointProcAddressing", meshDir, runTime); + writeMeshObject("faceProcAddressing", meshDir, runTime); + writeMeshObject("cellProcAddressing", meshDir, runTime); + writeMeshObject + ( + "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) { diff --git a/applications/utilities/miscellaneous/foamFormatConvert/writeMeshObject.H b/applications/utilities/miscellaneous/foamFormatConvert/writeMeshObject.H index 390c76ca03..717f5f4c02 100644 --- a/applications/utilities/miscellaneous/foamFormatConvert/writeMeshObject.H +++ b/applications/utilities/miscellaneous/foamFormatConvert/writeMeshObject.H @@ -40,13 +40,18 @@ namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template -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, diff --git a/etc/settings.csh b/etc/settings.csh index 4bde0e7ee0..44a25b32a9 100644 --- a/etc/settings.csh +++ b/etc/settings.csh @@ -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 diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H index 6eca153546..06e62423c8 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H @@ -75,7 +75,7 @@ inline Foam::KinematicParcel::KinematicParcel ) : Particle(owner, position, cellI), - active_(false), + active_(true), typeId_(owner.parcelTypeId()), nParticle_(0), d_(0.0), diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C index a334e8b880..f1cac65190 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C @@ -83,7 +83,7 @@ Foam::KinematicParcel::KinematicParcel { is.read ( - reinterpret_cast(&typeId_), + reinterpret_cast(&active_), sizeof(active_) + sizeof(typeId_) + sizeof(nParticle_) diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C index 704d48fe3e..7116fbf7c8 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C +++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C @@ -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))); diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C index 2a1edc1c55..2983a4d862 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C +++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C @@ -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); diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C index d24ac8d366..7151a8671b 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C +++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C @@ -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))); diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/constant/polyMesh/boundary b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/constant/polyMesh/boundary index 73459cea07..0ffd003789 100644 --- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/constant/polyMesh/boundary +++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/constant/polyMesh/boundary @@ -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 | | \*---------------------------------------------------------------------------*/