diff --git a/applications/utilities/miscellaneous/foamDebugSwitches/Make/options b/applications/utilities/miscellaneous/foamDebugSwitches/Make/options index 2c19af497709baa369fd5013384c38411b91161a..161b9c3c8ee9eeb2257f97f725c79c14a32ec91b 100644 --- a/applications/utilities/miscellaneous/foamDebugSwitches/Make/options +++ b/applications/utilities/miscellaneous/foamDebugSwitches/Make/options @@ -1,26 +1,43 @@ EXE_LIBS = \ - -lLESfilters \ - -lODE \ - -lcompressibleLESmodels \ - \ + -lautoMesh \ -lbasicThermophysicalModels \ - -lfiniteVolume \ + -lchemistryModel \ -lcombustionThermophysicalModels \ + -lcompressibleLESmodels \ -lcompressibleTurbulenceModels \ + -ldecompositionMethods \ -ldieselSpray \ + -ldynamicFvMesh \ + -ldynamicMesh \ -ledgeMesh \ -lengine \ -lerrorEstimation \ - -ldynamicMesh \ + -lfiniteVolume \ + -lforces \ + -lfvMotionSolvers \ + -lincompressibleLESmodels \ -lincompressibleTransportModels \ -lincompressibleTurbulenceModels \ - -lincompressibleLESmodels \ + -linterfaceProperties \ + -llagrangianIntermediate \ -llagrangian \ -llaminarFlameSpeedModels \ + -lLESdeltas \ + -lLESfilters \ + -lliquidMixture \ -lliquids \ + -lmeshTools \ + -lODE \ + -lOpenFOAM \ + -lpdf \ + -lphaseModel \ + -lradiation \ -lrandomProcesses \ -lsampling \ + -lsolidMixture \ + -lsolids \ -lspecie \ -lthermophysicalFunctions \ - -ltriSurface \ - -lpdf + -ltopoChangerFvMesh \ + -ltriSurface + diff --git a/etc/controlDict b/etc/controlDict index f27014e5f879c3eab16e21dba10cd5ed4407936f..9017bbdd3a15f526b3780411626c7424ae764f85 100644 --- a/etc/controlDict +++ b/etc/controlDict @@ -75,657 +75,781 @@ Documentation DebugSwitches { - aC11H10 0; - addCell 0; - addFace 0; - addPoint 0; - algebraicPair 0; - amgCoupledInterface 0; - amgInterfaceField 0; - anisotropic 0; - APIdiffCoefFunc 0; - Ar 0; - areaScalarField 0; - areaTensorField 0; - areaVectorField 0; - atomizationModel 0; - attachDetach 0; - backward 0; - basePatch 0; - basicMesh 0; - basicMixture 0; - basicThermo 0; - bC11H10 0; - BDCG 0; - BICCG 0; - BirdCarreau 0; - blended 0; - blobsSheetAtomization 0; - blobsSwirlInjector 0; - booleanSurface 0; - boundaryCutter 0; - boundaryMesh 0; - boundaryToFace 0; - bounded 0; - boundedBackward 0; - boxToCell 0; - boxToFace 0; - boxToPoint 0; - breakupModel 0; - C10H22 0; - C12H26 0; - C13H28 0; - C14H30 0; - C16H34 0; - C2H5OH 0; - C2H6 0; - C2H6O 0; - C3H6O 0; - C3H8 0; - C4H10O 0; - C6H14 0; - C6H6 0; - C7H16 0; - C7H8 0; - C8H10 0; - C8H18 0; - C9H20 0; - calculated 0; - CallbackRegistry 0; - Cartesian 0; - cell 0; - cellClassification 0; - cellCuts 0; - cellDistFuncs 0; - cellLimited 0; - cellList 0; - cellLooper 0; - cellMDLimited 0; - cellModeller 0; - cellPoint 0; - cellPointFace 0; - cellSet 0; - cellToCell 0; - cellToFace 0; - cellToPoint 0; - cellZone 0; - CH3OH 0; - chemistryReader 0; - chemkinReader 0; - ChomiakInjector 0; - clippedLinear 0; - Cloud 0; - CoEuler 0; - CoGamma2 0; - collisionModel 0; - commonRailInjector 0; - commSchedule 0; - componentMixed 0; - compound 0; - const 0; - constant 0; - constInjector 0; - coordinateSystem 0; - corrected 0; - coupled 0; - CrankNicholson 0; - CrossPowerLaw 0; - cubeRootVol 0; - cubic 0; - cubicCorrection 0; - cyclic 0; - cyclicLduCoupledInterface 0; - cyclicLduInterface 0; - cyclicLduInterfaceField 0; - cylindrical 0; - database 0; - dataSchedule 0; - DCG 0; - DeardorffDiffStress 0; - default 0; - definedHollowConeInjector 0; - definedInjector 0; - definedPressureSwirlInjector 0; - deformationEnergy 0; - diagonal 0; - diagonalSolver 0; - diagTensorField 0; - DIC 0; - DICGaussSeidel 0; - dictionary 0; - DILU 0; - dimensionedTypes 0; - dimensionSet 1; - directCombineFaces 0; - directDuplicatePoints 0; - directHexRef8 0; - directionMixed 0; - directMappedPatch 0; - directMeshCutAndRemove 0; - directPolyTopoChange 0; - directRemoveCells 0; - directRemoveFaces 0; - directRemovePoints 0; - disallowGenericFvPatchField 0; - disallowGenericPolyPatch 0; - dispersionLESModel 0; - dispersionModel 0; - dispersionRASModel 0; - distortionEnergy 0; - downwind 0; - dragModel 0; - dynMixedSmagorinsky 0; - dynOneEqEddy 0; - dynSmagorinsky 0; - edgeInterpolation 0; - edgeIntersections 0; - edgeList 0; - edgeScalarField 0; - edgeSurface 0; - edgeTensorField 0; - edgeVectorField 0; - elementScalarField 0; - elementTensorField 0; - elementVectorField 0; - empty 0; - engineMesh 0; - enrichedPatch 0; - entry 0; - ETAB 0; - Euler 0; - evaporationModel 0; - exponential 0; - extendedLeastSquares 0; - extendedLeastSquaresVectors 0; - fa 0; - faBoundaryMesh 0; - faceAreaPair 0; - FaceCellWave 0; - faceCoupleInfo 0; - faceLimited 0; - faceList 0; - faceMDLimited 0; - faceSet 0; - faceToCell 0; - faceToFace 0; - faceToPoint 0; - faceZone 0; - faMesh 0; - faPatchField 0; - faScalarMatrix 0; - faSchemes 0; - fastLduTriLookup 0; - faTensorMatrix 0; - faVectorMatrix 0; - FDIC 0; - featureEdgeMesh 0; - features 0; - fields 0; - fieldToCell 0; - file 0; - fileName 2; - finiteVolume 0; - fixedEnthalpy 0; - fixedFluxBuoyantPressure 0; - fixedFluxPressure 0; - fixedGradient 0; - fixedNormalSlip 0; - fixedUnburntEnthalpy 0; - fixedValue 0; - fixedValueOutflow 0; - fluxCorrectedVelocity 0; - foamChemistryReader 0; - FoamX 0; - FoamXError 0; - fourth 0; - freestream 0; - freestreamPressure 0; - fv 0; - fvMatrix 0; - fvMesh 0; - fvMeshDistribute 0; - fvMotionSolver 0; - fvPatchField 0; - fvScalarMatrix 0; - fvSchemes 0; - fvSolution 0; - fvSphericalTensorMatrix 0; - fvSymmTensorMatrix 0; - fvTensorMatrix 0; - fvVectorMatrix 0; - GAMG 0; - gamgAgglomeration 0; - gamgInterface 0; - gamgInterfaceField 0; - Gamma 0; - Gamma01 0; - Gamma2 0; - Gamma201 0; - Gamma2Limit 0; - Gamma2V 0; - GammaLimit 0; - GammaV 0; - Gauss 0; - GaussSeidel 0; - general 0; - geomCellLooper 0; - geometricFields 0; - geometricSurfacePatch 0; - global 0; - globalMeshData 0; - globalPoints 0; - globalProcessor 0; - gnuplot 0; - gradientDispersionRAS 0; - gradientEnthalpy 0; - gradientUnburntEnthalpy 0; - Gulders 0; - GuldersEGR 0; - H2O 0; - harmonic 0; - hashTable 0; - HashTable 0; - hCombustionThermo 0; - heatTransferModel 0; - hexCellLooper 0; - hexRef8 0; - hhuCombustionThermo 0; - hhuMixtureThermo<egrMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> 0; - hhuMixtureThermo<egrMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - hhuMixtureThermo<homogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> 0; - hhuMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - hhuMixtureThermo<inhomogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> 0; - hhuMixtureThermo<inhomogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - hhuMixtureThermo<veryInhomogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> 0; - hhuMixtureThermo<veryInhomogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - hMixtureThermo<dieselMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - hMixtureThermo<homogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> 0; - hMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - hMixtureThermo<inhomogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> 0; - hMixtureThermo<inhomogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - hMixtureThermo<multiComponentMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - hMixtureThermo<reactingMixture> 0; - hMixtureThermo<veryInhomogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> 0; - hMixtureThermo<veryInhomogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - hollowConeInjector 0; - hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> 0; - hThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>> 0; - hThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> 0; - IC8H18 0; - ICCG 0; - IDEA 0; - IFstream 0; - indexedOctree 0; - indexedParticle 0; - injectorModel 0; - injectorType 0; - inletOutlet 0; - interpolations 0; - intersectedSurface 0; - inverseLinear 0; - IOobject 0; - IOptrList<injector> 0; - IOPtrList<injector> 0; - IOPtrList<MRFZone> 0; - IOPtrList<porousZone> 0; - jplot 0; - kEpsilon 0; - kOmegaSST 0; - KRR4 0; - labelField 0; - labelList 0; - labelListList 0; - labelToCell 0; - labelToFace 0; - labelToPoint 0; - LamBremhorstKE 0; - laminar 0; - laminarFlameSpeed 0; - laplace 0; - LaunderGibsonRSTM 0; - LaunderSharmaKE 0; - layerAdditionRemoval 0; - layered 0; - lduCoupledInterface 0; - lduInterface 0; - lduInterfaceField 0; - lduMatrix 1; - lduMesh 0; - leastSquares 0; - leastSquaresVectors 0; - LESdelta 0; - LESfilter 0; - LESmodel 0; - level 2; - licence 0; - LienCubicKE 0; - LienCubicKELowRe 0; - LienLeschzinerLowRe 0; - limited 0; - limitedCubic 0; - limitedCubic01 0; - limitedCubicV 0; - limitedGamma 0; - limitedLimitedCubic 0; - limitedLimitedLinear 0; - limitedLinear 0; - limitedLinear01 0; - limitedLinearV 0; - limitedMUSCL 0; - LimitedMUSCL 0; - limitedSuperBee 0; - limitedSurfaceInterpolationScheme 0; - limitedVanLeer 0; - linear 0; - linearUpwind 0; - linearUpwindV 0; - liquid 0; - LISA 0; - localBlended 0; - localMax 0; - localMin 0; - localPointRegion 0; - locDynOneEqEddy 0; - lowReOneEqEddy 0; - LRR 0; - LRRDiffStress 0; - MB 0; - mesh 0; - meshCutAndRemove 0; - meshCutter 0; - meshModifier 0; - meshMorphEngine 0; - meshSearch 0; - meshToMesh 0; - meshWave 0; - MeshWave 0; - midPoint 0; - minMod 0; - mixed 0; - mixedEnthalpy 0; - mixedSmagorinsky 0; - mixedUnburntEnthalpy 0; - modifyCell 0; - modifyFace 0; - modifyPoint 0; - motionDiff 0; - motionSmoother 0; - motionSolver 0; - movingWallVelocity 0; - multiDirRefinement 0; - multivariateSelection 0; - MUSCL 0; - MUSCL01 0; - muSgsWallFunction 0; - N2 0; - nbrToCell 0; - nearestToCell 0; - Newtonian 0; - noDragModel 0; - none 0; - NonlinearKEShih 0; - normal 0; - normalToFace 0; - NSRDSfunc0 0; - NSRDSfunc1 0; - NSRDSfunc14 0; - NSRDSfunc2 0; - NSRDSfunc3 0; - NSRDSfunc4 0; - NSRDSfunc5 0; - NSRDSfunc6 0; - NSRDSfunc7 0; - nuSgsWallFunction 0; - nutStandardRoughWallFunction 0; - nutStandardWallFunction 0; - nutWallFunction 0; - objectRegistry 0; - octree 0; - octreeDataEdges 0; - octreeDataFace 0; - octreeDataFaceList 0; - octreeDataTriSurface 0; - ODESolver 0; - off 0; - OFstream 0; - oneEqEddy 0; - orientedSurface 0; - ORourke 0; - oscillatingFixedValue 0; - outletInlet 0; - outletStabilised 0; - PackedList 0; - pair 0; - parabolicCylindrical 0; - parallelInfo 0; - parcel 0; - ParSortableList 0; - partialSlip 0; - passiveParticle 0; - patch 0; - patchEnhanced 0; - patchFields 0; - patchToFace 0; - PatchToPatchInterpolation 0; - patchZones 0; - PBiCG 0; - PCG 0; - pdf 0; - perfectInterface 0; - Phi 0; - PointEdgeWave 0; - pointIndexHitList 0; - PointPatchField 0; - pointPatchInterpolation 0; - pointScalarField 0; - pointScalarField::DimensionedInternalField 0; - pointSet 0; - pointSphericalTensorField 0; - pointSphericalTensorField::DimensionedInternalField 0; - pointSymmTensorField 0; - pointSymmTensorField::DimensionedInternalField 0; - pointTensorField 0; - pointTensorField::DimensionedInternalField 0; - pointToCell 0; - pointToFace 0; - pointToPoint 0; - pointVectorField 0; - pointVectorField::DimensionedInternalField 0; - pointZone 0; - polyBoundaryMesh 0; - polyMesh 0; - polyMeshMorphEngine 0; - polyTopoChange 0; - polyTopoChanger 0; - Prandtl 0; - pressureDirectedInletOutletVelocity 0; - pressureDirectedInletVelocity 0; - pressureInletOutletVelocity 0; - pressureInletUniformVelocity 0; - pressureInletVelocity 0; - pressureSwirlInjector 0; - pressureTransmissive 0; - primitiveMesh 0; - PrimitivePatch 0; - probes 0; - processor 0; - processorLduCoupledInterface 0; - processorLduInterface 0; - processorLduInterfaceField 0; - pseudoSolid 0; - Pstream 0; - pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>> 0; - pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>> 0; - pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>> 0; - quadratic 0; - QUICK 0; - QZeta 0; - RanzMarshall 0; - raw 0; - reaction 0; - realizableKE 0; - refinementHistory 0; - refinementIterator 0; - reflect 0; - regionSplit 0; - regIOobject 0; - ReitzDiwakar 0; - ReitzKHRT 0; - remove 0; - removeCell 0; - removeCells 0; - removeFace 0; - removeFaces 0; - removePoint 0; - repatchPolyMesh 0; - reverseLinear 0; - rhoMUSCL 0; - RK 0; - RNGkEpsilon 0; - RosinRammler 0; - rotatedBoxToCell 0; - rotatingPressureInletOutletVelocity 0; - rotatingTotalPressure 0; - RutlandFlashBoil 0; - saturateEvaporationModel 0; - scalarField 0; - scaleSimilarity 0; - setUpdater 0; - SFCD 0; - SFCDV 0; - shapeList 0; - shapeToCell 0; - SHF 0; - SIBS 0; - simple 0; - skewCorrected 0; - skewCorrectionVectors 0; - skewLinear 0; - sliced 0; - slidingInterface 0; - slip 0; - Smagorinsky 0; - Smagorinsky2 0; - smooth 0; - smoothSolver 0; - solution 0; - SpalartAllmaras 0; - spectEddyVisc 0; - spherical 0; - sphericalTensorField 0; - standardDragModel 0; - standardEvaporationModel 0; - static 0; - StaticHashTable 0; - steadyState 0; - stochasticDispersionRAS 0; - string 0; - SuperBee 0; - SuperBee01 0; - supersonicFreestream 0; - surfaceFeatures 0; - surfaceInterpolation 0; - surfaceInterpolationScheme 0; - surfaceIntersection 0; - surfaceNormalFixedValue 0; - surfacePatch 0; - surfacePatchIOList 0; - surfaceScalarField 0; - surfaceScalarField::DimensionedInternalField 0; - surfaceSnap 0; - surfaceSphericalTensorField 0; - surfaceSphericalTensorField::DimensionedInternalField 0; - surfaceSymmTensorField 0; - surfaceSymmTensorField::DimensionedInternalField 0; - surfaceTensorField 0; - surfaceTensorField::DimensionedInternalField 0; - surfaceToCell 0; - surfaceToPoint 0; - surfaceVectorField 0; - surfaceVectorField::DimensionedInternalField 0; - swirlInjector 0; - symmetryPlane 0; - symmTensorField 0; - syringePressure 0; - TAB 0; - tensorField 0; - tetFemMatrix 0; - tetFemScalarMatrix 0; - tetFemTensorMatrix 0; - tetFemVectorMatrix 0; - tetPointScalarField 0; - tetPointTensorField 0; - tetPointVectorField 0; - tetPolyMesh 0; - tetPolyPatchFields 0; - thermo 0; - thermophysicalFunction 0; - time 0; - timer 0; - timeVaryingMappedFixedValue 0; - timeVaryingUniformFixedValue 0; - topoAction 0; - topoCellLooper 0; - topoSet 0; - topoSetSource 0; - toroidal 0; - totalPressure 0; - totalTemperature 0; - trajectory 0; - transform 0; - transportModel 0; - treeDataTriSurface 0; - treeLeaf 0; - treeNode 0; - triSurface 0; - turbulenceModel 0; - turbulentInlet 0; - UMIST 0; - uncorrected 0; - undoableMeshCutter 0; - uniform 0; - uniformFixedValue 0; - unitInjector 0; - unix 0; - Unix 0; - upwind 0; - value 0; - valueStored 0; - vanDriest 0; - vanLeer 0; - vanLeer01 0; - vanLeerV 0; - vector 0; - vector2DField 0; - vectorField 0; - viscosityModel 0; - volPointInterpolation 0; - volScalarField 0; - volScalarField::DimensionedInternalField 0; - volSphericalTensorField 0; - volSphericalTensorField::DimensionedInternalField 0; - volSymmTensorField 0; - volSymmTensorField::DimensionedInternalField 0; - volTensorField 0; - volTensorField::DimensionedInternalField 0; - volVectorField 0; - volVectorField::DimensionedInternalField 0; - walkPatch 0; - wall 0; - wallBuoyantPressure 0; - wallHeatTransfer 0; - wallLayerCells 0; - wallModel 0; - waveTransmissive 0; - wedge 0; - weighted 0; - word 2; - writer 0; - xmgr 0; - zeroGradient 0; - zoneToCell 0; - zoneToFace 0; - zoneToPoint 0; + APIdiffCoefFunc + Ar + BICCG + BirdCarreau + C10H22 + C12H26 + C13H28 + C14H30 + C16H34 + C2H5OH + C2H6 + C2H6O + C3H6O + C3H8 + C4H10O + C6H14 + C6H6 + C7H16 + C7H8 + C8H10 + C8H18 + C9H20 + CH3OH + CallbackRegistry + CarnahanStarling + ChomiakInjector + Cloud<indexedParticle> + Cloud<kinematicParcel> + Cloud<parcel> + Cloud<passiveParticle> + Cloud<reactingParcel> + Cloud<thermoParcel> + Cloud<trackedParticle> + CoEuler + CompositionModel + ConstantRateDevolatilisation + CrankNicholson + CrossPowerLaw + Cs + DIC + DICGaussSeidel + DILU + DILUGaussSeidel + DeardorffDiffStress + DispersionModel + DispersionRASModel + DragModel + ETAB + Ergun + Euler + EulerImplicit + EulerRotation + FDIC + FaceCellWave + GAMG + GAMGAgglomeration + GAMGInterface + GAMGInterfaceField + Gamma + Gamma01 + GammaV + Gauss + GaussSeidel + Gibilaro + Gidaspow + GidaspowErgunWenYu + GidaspowSchillerNaumann + GradientDispersionRAS + Gulders + GuldersEGR + H2O + HashTable + HeatTransferModel + HrenyaSinclair + IC8H18 + ICCG + IDEA + IFstream + IOPtrList<MRFZone> + IOPtrList<coordinateSystem> + IOPtrList<injector> + IOPtrList<porousZone> + IOobject + InjectionModel + JohnsonJackson + KRR4 + KinematicCloud<kinematicParcel> + KinematicCloud<reactingParcel> + KinematicCloud<thermoParcel> + KinematicParcel<reactingParcel> + KinematicParcel<thermoParcel> + LESdelta + LESfilter + LESmodel + LISA + LRR + LRRDiffStress + LamBremhorstKE + LaunderGibsonRSTM + LaunderSharmaKE + LduMatrix + LienCubicKE + LienCubicKELowRe + LienLeschzinerLowRe + List<bool> + List<complex> + List<complexVector> + List<edge> + List<label> + List<scalar> + List<sphericalTensor> + List<symmTensor> + List<tensor> + List<vector> + Lun + LunSavage + MB + MC + MCV + MUSCL + MUSCL01 + MUSCLV + ManualInjection + MarshakRadiation + MarshakRadiationFixedT + MassTransferModel + MeshWave + Minmod + MinmodV + N2 + NSRDSfunc0 + NSRDSfunc1 + NSRDSfunc14 + NSRDSfunc2 + NSRDSfunc3 + NSRDSfunc4 + NSRDSfunc5 + NSRDSfunc6 + NSRDSfunc7 + Newtonian + NoDispersion + NoDrag + NoHeatTransfer + NoInjection + NoMassTransfer + NoSurfaceReaction + NonlinearKEShih + ODE + ODESolver + OFstream + ORourke + OSPRE + OSPREV + P1 + PBiCG + PCG + PackedList + ParSortableList + PatchToPatchInterpolation + Phi + PointEdgeWave + Prandtl + PrimitivePatch + Pstream + QUICK + QUICKV + QZeta + RK + RNGkEpsilon + RanzMarshall + ReactingCloud<reactingParcel> + ReactingParcel<reactingParcel> + Rebound + ReitzDiwakar + ReitzKHRT + RosinRammler + RutlandFlashBoil + SDA + SFCD + SFCDV + SHF + SIBS + SKA + SLTS + STARCDRotation + Schaeffer + SchillerNaumann + SinclairJackson + SingleKineticRateDevolatilisation + SingleMixtureFraction + Smagorinsky + SmoothSolver + SpalartAllmaras + SphereDrag + StandardWallInteraction + StaticHashTable + StochasticDispersionRAS + SuperBee + SuperBeeV + SurfaceReactionModel + Syamlal + SyamlalOBrien + SyamlalRogersOBrien + TAB + ThermoCloud<reactingParcel> + ThermoCloud<thermoParcel> + ThermoParcel<reactingParcel> + ThermoParcel<thermoParcel> + UMIST + UMISTV + Unix + WallInteractionModel + WenYu + aC11H10 + absorptionEmissionModel + addCell + addFace + addPatchCellLayer + addPoint + advective + algebraicPair + angularOscillatingDisplacement + angularOscillatingVelocity + anisotropic + ash + atomizationModel + attachDetach + autoHexMeshDriver + bC11H10 + backward + basePatch + basicKinematicCloud + basicMixture + basicReactingCloud + basicThermo + basicThermoCloud + binaryAbsorptionEmission + blended + blobsSheetAtomization + blobsSwirlInjector + booleanSurface + boundaryCutter + boundaryMesh + boundaryToFace + boundedBackward + boxToCell + boxToFace + boxToPoint + breakupModel + calculated + cartesian + cell + cellClassification + cellCuts + cellDistFuncs + cellLimited + cellList + cellLooper + cellMDLimited + cellMotion + cellPoint + cellPointFace + cellPointWeight + cellSet + cellToCell + cellToFace + cellToPoint + cellZone + chemistryReader + chemistrySolver + chemkinReader + clippedLinear + cloud + cloudAbsorptionEmission + cloudScatter + collisionModel + combineFaces + commSchedule + commonRailInjector + compound + conductivityModel + constInjector + constant + constantAbsorptionEmission + constantGammaContactAngle + constantScatter + coordinateRotation + coordinateSystem + corrected + coupled + cubeRootVol + cubic + curve + cyclic + cyclicLduInterface + cyclicLduInterfaceField + cylindrical + dataSchedule + decompositionMethod + definedHollowConeInjector + definedInjector + definedPressureSwirlInjector + diagTensorField + diagonal + dictionary + dimensionSet + directMapped + directMappedPatch + directionMixed + directional + disallowDefaultFvsPatchField + disallowGenericFvPatchField + disallowGenericPointPatchField + disallowGenericPolyPatch + dispersionLESModel + dispersionModel + dispersionRASModel + displacementComponentLaplacian + displacementInterpolation + displacementLaplacian + displacementSBRStress + downwind + dragModel + duplicatePoints + dx + dynMixedSmagorinsky + dynOneEqEddy + dynSmagorinsky + dynamicFvMesh + dynamicGammaContactAngle + dynamicInkJetFvMesh + dynamicMotionSolverFvMesh + dynamicRefineFvMesh + edgeIntersections + edgeList + edgeSurface + empty + engineMesh + enrichedPatch + errorDrivenRefinement + evaporationModel + exponential + extendedLeastSquares + extendedLeastSquaresVectors + face + faceAreaPair + faceCoupleInfo + faceLimited + faceList + faceMDLimited + faceSet + faceToCell + faceToFace + faceToPoint + faceZone + fan + featureEdgeMesh + fieldToCell + file + fileName + filteredLinear + filteredLinear2 + filteredLinear2V + fixedEnthalpy + fixedFluxBuoyantPressure + fixedFluxPressure + fixedGradient + fixedNormalSlip + fixedUnburntEnthalpy + fixedValue + fluxCorrectedVelocity + foamChemistryReader + foamFile + forceCoeffs + forces + fourth + freestream + freestreamPressure + frictionalStressModel + functionObject + fv + fvMesh + fvMeshDistribute + fvMotionSolver + fvPatchField + fvScalarMatrix + fvSchemes + fvSphericalTensorMatrix + fvSymmTensorMatrix + fvTensorMatrix + fvVectorMatrix + fvsPatchField + gammaContactAngle + gammaFixedPressure + general + generic + genericPatch + geomCellLooper + geometricSurfacePatch + global + globalMeshData + globalPoints + gnuplot + gradientDispersionRAS + gradientEnthalpy + gradientUnburntEnthalpy + granularPressureModel + hCombustionThermo + hMixtureThermo<dieselMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + hMixtureThermo<homogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> + hMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + hMixtureThermo<inhomogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> + hMixtureThermo<inhomogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + hMixtureThermo<multiComponentMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + hMixtureThermo<reactingMixture> + hMixtureThermo<veryInhomogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> + hMixtureThermo<veryInhomogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> + hThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>> + hThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + harmonic + heatTransferModel + hexCellLooper + hexRef8 + hhuCombustionThermo + hhuMixtureThermo<egrMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> + hhuMixtureThermo<egrMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + hhuMixtureThermo<homogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> + hhuMixtureThermo<homogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + hhuMixtureThermo<inhomogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> + hhuMixtureThermo<inhomogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + hhuMixtureThermo<veryInhomogeneousMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>> + hhuMixtureThermo<veryInhomogeneousMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>> + hierarchical + hollowConeInjector + include + indexedOctree + indexedParticle + injectorModel + injectorType + inletOutlet + inletOutletTotalTemperature + inputMode + interfaceCompression + intersectedSurface + inverseDistance + inverseFaceDistance + inversePointDistance + inverseVolume + jplot + jumpCyclic + kEpsilon + kOmegaSST + kinematicCloud + kinematicParcel + labelField + labelList + labelListList + labelToCell + labelToFace + labelToPoint + laminar + laminarFlameSpeed + laplace + layerAdditionRemoval + layered + lduInterface + lduInterfaceField + lduMatrix + lduMesh + leastSquares + leastSquaresVectors + level + limited + limitedCubic + limitedCubic01 + limitedCubicV + limitedGamma + limitedLimitedCubic + limitedLimitedLinear + limitedLinear + limitedLinear01 + limitedLinearV + limitedMUSCL + limitedSurfaceInterpolationScheme + limitedVanLeer + linear + linearUpwind + linearUpwindV + liquid + locDynOneEqEddy + localBlended + localMax + localMin + localPointRegion + lowReOneEqEddy + manual + massFlowRateInletVelocity + meshCutAndRemove + meshCutter + meshModifier + meshRefinement + meshSearch + meshToMesh + metis + midPoint + midPointAndFace + mixed + mixedEnthalpy + mixedSmagorinsky + mixedUnburntEnthalpy + mixerFvMesh + modifyCell + modifyFace + modifyPoint + motionDiffusivity + motionDirectional + motionSmoother + motionSolver + movingConeTopoFvMesh + movingWallVelocity + muSgsWallFunction + multiDirRefinement + multivariateSelection + mutStandardRoughWallFunction + nbrToCell + nearestToCell + noAbsorptionEmission + noDragModel + noRadiation + none + normal + normalToFace + nuSgsWallFunction + null + nutStandardRoughWallFunction + nutStandardWallFunction + nutWallFunction + objectRegistry + octree + octreeDataEdges + octreeDataFace + octreeDataFaceList + octreeDataTriSurface + off + offsetTriSurfaceMesh + oneEqEddy + orientedSurface + oscillatingDisplacement + oscillatingFixedValue + oscillatingVelocity + outletInlet + outletStabilised + pair + parabolicCylindrical + parcel + partialSlip + passiveParticle + patch + patchToFace + patchZones + pdf + perfectInterface + pointIndexHitList + pointPatchField + pointPatchInterpolation + pointScalarField + pointScalarField::DimensionedInternalField + pointSet + pointSphericalTensorField + pointSphericalTensorField::DimensionedInternalField + pointSymmTensorField + pointSymmTensorField::DimensionedInternalField + pointTensorField + pointTensorField::DimensionedInternalField + pointToCell + pointToFace + pointToPoint + pointVectorField + pointVectorField::DimensionedInternalField + pointZone + polyBoundaryMesh + polyMesh + polyMeshGeometry + polyMeshInfo + polyTopoChange + polyTopoChanger + pressureDirectedInletOutletVelocity + pressureDirectedInletVelocity + pressureInletOutletVelocity + pressureInletUniformVelocity + pressureInletVelocity + pressureSwirlInjector + primitiveMesh + primitiveMeshGeometry + probes + processor + processorLduInterface + processorLduInterfaceField + pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>> + pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>> + pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>> + quadratic + radialModel + radiationModel + raw + reactingCloud + reactingParcel + reaction + realizableKE + refinementHistory + refinementIterator + reflect + regIOobject + regionSplit + remove + removeCell + removeCells + removeFace + removeFaces + removePoint + removePoints + reverseLinear + rotatedBoxToCell + rotatingPressureInletOutletVelocity + rotatingTotalPressure + sampledPatch + sampledPlane + sampledSet + sampledSurface + saturateEvaporationModel + scalarAverageField + scalarField + scalarRange + scaleSimilarity + scatterModel + searchableBox + searchableSurface + sequential + setUpdater + sets + shapeList + shapeToCell + simple + skewCorrected + skewCorrectionVectors + sliced + slidingInterface + slip + smooth + smoothSolver + solid + solidBodyMotionFunction + solidBodyMotionFvMesh + solution + spectEddyVisc + sphereToCell + spherical + sphericalTensorAverageField + sphericalTensorField + standardDragModel + standardEvaporationModel + static + staticFvMesh + steadyState + stl + stochasticDispersionRAS + string + supersonicFreestream + surfaceFeatures + surfaceInterpolation + surfaceInterpolationScheme + surfaceIntersection + surfaceNormalFixedValue + surfacePatch + surfacePatchIOList + surfaceScalarField + surfaceScalarField::DimensionedInternalField + surfaceSlipDisplacement + surfaceSphericalTensorField + surfaceSphericalTensorField::DimensionedInternalField + surfaceSymmTensorField + surfaceSymmTensorField::DimensionedInternalField + surfaceTensorField + surfaceTensorField::DimensionedInternalField + surfaceToCell + surfaceToPoint + surfaceVectorField + surfaceVectorField::DimensionedInternalField + surfaceWriter + surfaces + swirlInjector + symmTensorAverageField + symmTensorField + symmetryPlane + syringePressure + tensorAverageField + tensorField + thermoCloud + thermoParcel + thermophysicalFunction + time + timeVaryingGammaContactAngle + timeVaryingMappedFixedValue + timeVaryingUniformFixedValue + timer + topoAction + topoCellLooper + topoChangerFvMesh + topoSet + topoSetSource + toroidal + totalPressure + totalTemperature + trackedParticle + trajectory + transform + treeDataCell + treeDataFace + treeDataTriSurface + treeLeaf + treeNode + triSurface + triSurfaceMesh + triSurfaceMeshes + turbulenceModel + turbulentInlet + turbulentIntensityKineticEnergyInlet + turbulentMixingLengthDissipationRateInlet + uncorrected + undoableMeshCutter + uniform + uniformFixedValue + unitInjector + upwind + value + vanAlbada + vanAlbadaV + vanDriest + vanLeer + vanLeer01 + vanLeerV + vector2DField + vectorAverageField + vectorField + velocityComponentLaplacian + velocityLaplacian + viscosityModel + volPointInterpolation + volScalarField + volScalarField::DimensionedInternalField + volSphericalTensorField + volSphericalTensorField::DimensionedInternalField + volSymmTensorField + volSymmTensorField::DimensionedInternalField + volTensorField + volTensorField::DimensionedInternalField + volVectorField + volVectorField::DimensionedInternalField + vtk + walkPatch + wall + wallHeatTransfer + wallLayerCells + wallModel + waveTransmissive + wedge + weighted + word + writer + xmgr + zeroGradient + zoneToCell + zoneToFace + zoneToPoint } InfoSwitches diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriverLayers.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriverLayers.C index a21b589ba3c7dd8bd8f7c3b44c382bd6020a7e5b..dcca9fa93d1054b8f261a993d4d935ca33c3dc4c 100644 --- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriverLayers.C +++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriverLayers.C @@ -2882,8 +2882,7 @@ void Foam::autoHexMeshDriver::addLayers if (debug_) { - Info<< "*** Writing layer mesh to " - << mesh_.time().timeName() << endl; + Info<< "Writing layer mesh to " << mesh_.time().timeName() << endl; newMesh.write(); cellSet addedCellSet ( diff --git a/src/fvMotionSolver/Make/files b/src/fvMotionSolver/Make/files index 8be9c4796c2d5c65bf56cf4816443645bc26380b..a49366e8adcaf17b46d2aa170c03ae4eb72b3f6b 100644 --- a/src/fvMotionSolver/Make/files +++ b/src/fvMotionSolver/Make/files @@ -1,5 +1,6 @@ fvMotionSolvers/fvMotionSolver/fvMotionSolver.C fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C +fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.C fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.C new file mode 100644 index 0000000000000000000000000000000000000000..8dc0dc5db056b548826fa664211bb9beccfa1e46 --- /dev/null +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.C @@ -0,0 +1,465 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "displacementInterpolationFvMotionSolver.H" +#include "addToRunTimeSelectionTable.H" +#include "SortableList.H" +#include "IOList.H" +#include "Tuple2.H" +#include "mapPolyMesh.H" +#include "interpolateXY.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(displacementInterpolationFvMotionSolver, 0); + + addToRunTimeSelectionTable + ( + fvMotionSolver, + displacementInterpolationFvMotionSolver, + dictionary + ); + + template<> + const word IOList<Tuple2<scalar, vector> >::typeName("scalarVectorTable"); +} + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::displacementInterpolationFvMotionSolver:: +displacementInterpolationFvMotionSolver +( + const polyMesh& mesh, + Istream& msData +) +: + fvMotionSolver(mesh), + points0_ + ( + pointIOField + ( + IOobject + ( + "points", + mesh.time().constant(), + polyMesh::meshSubDir, + mesh, + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ) + ) + ), + dynamicMeshCoeffs_ + ( + IOdictionary + ( + IOobject + ( + "dynamicMeshDict", + mesh.time().constant(), + mesh, + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ) + ).subDict(typeName + "Coeffs") + ) +{ + // Get zones and their interpolation tables for displacement + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + List<Pair<word> > faceZoneToTable + ( + dynamicMeshCoeffs_.lookup("interpolationTables") + ); + + const faceZoneMesh& fZones = mesh.faceZones(); + + times_.setSize(fZones.size()); + displacements_.setSize(fZones.size()); + + forAll(faceZoneToTable, i) + { + const word& zoneName = faceZoneToTable[i][0]; + label zoneI = fZones.findZoneID(zoneName); + + if (zoneI == -1) + { + FatalErrorIn + ( + "displacementInterpolationFvMotionSolver::" + "displacementInterpolationFvMotionSolver(const polyMesh&," + "Istream&)" + ) << "Cannot find zone " << zoneName << endl + << "Valid zones are " << mesh.faceZones().names() + << exit(FatalError); + } + + const word& tableName = faceZoneToTable[i][1]; + + IOList<Tuple2<scalar, vector> > table + ( + IOobject + ( + tableName, + mesh.time().constant(), + "tables", + mesh, + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ) + ); + + // Copy table + times_[zoneI].setSize(table.size()); + displacements_[zoneI].setSize(table.size()); + + forAll(table, j) + { + times_[zoneI][j] = table[j].first(); + displacements_[zoneI][j] = table[j].second(); + } + } + + + + // Sort points into bins according to position relative to faceZones + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Done in all three directions. + + for (direction dir = 0; dir < vector::nComponents; dir++) + { + // min and max coordinates of all faceZones + SortableList<scalar> zoneCoordinates(2*faceZoneToTable.size()); + + forAll(faceZoneToTable, i) + { + const word& zoneName = faceZoneToTable[i][0]; + label zoneI = fZones.findZoneID(zoneName); + const faceZone& fz = fZones[zoneI]; + + scalarField fzCoords = fz().localPoints().component(dir); + + zoneCoordinates[2*i] = gMin(fzCoords); + zoneCoordinates[2*i+1] = gMax(fzCoords); + } + zoneCoordinates.sort(); + + // Slightly tweak min and max face zone so points sort within + zoneCoordinates[0] -= SMALL; + zoneCoordinates[zoneCoordinates.size()-1] += SMALL; + + // Check if we have static min and max mesh bounds + const scalarField meshCoords = points0_.component(dir); + + scalar minCoord = gMin(meshCoords); + scalar maxCoord = gMax(meshCoords); + + if (debug) + { + Pout<< "direction " << dir << " : " + << "mesh ranges from coordinate " << minCoord << " to " + << maxCoord << endl; + } + + // Make copy of zoneCoordinates; include min and max of mesh + // if necessary. Mark min and max with zoneI=-1. + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + labelList& rangeZone = rangeToZone_[dir]; + labelListList& rangePoints = rangeToPoints_[dir]; + List<scalarField>& rangeWeights = rangeToWeights_[dir]; + + scalarField rangeToCoord(zoneCoordinates.size()); + rangeZone.setSize(zoneCoordinates.size()); + label rangeI = 0; + + if (minCoord < zoneCoordinates[0]) + { + label sz = rangeZone.size(); + rangeToCoord.setSize(sz+1); + rangeZone.setSize(sz+1); + rangeToCoord[rangeI] = minCoord-SMALL; + rangeZone[rangeI] = -1; + + if (debug) + { + Pout<< "direction " << dir << " : " + << "range " << rangeI << " at coordinate " + << rangeToCoord[rangeI] << " from min of mesh " + << rangeZone[rangeI] << endl; + } + rangeI = 1; + } + forAll(zoneCoordinates, i) + { + rangeToCoord[rangeI] = zoneCoordinates[i]; + rangeZone[rangeI] = zoneCoordinates.indices()[i]/2; + + if (debug) + { + Pout<< "direction " << dir << " : " + << "range " << rangeI << " at coordinate " + << rangeToCoord[rangeI] + << " from zone " << rangeZone[rangeI] << endl; + } + rangeI++; + } + if (maxCoord > zoneCoordinates[zoneCoordinates.size()-1]) + { + label sz = rangeToCoord.size(); + rangeToCoord.setSize(sz+1); + rangeZone.setSize(sz+1); + rangeToCoord[sz] = maxCoord+SMALL; + rangeZone[sz] = -1; + + if (debug) + { + Pout<< "direction " << dir << " : " + << "range " << rangeI << " at coordinate " + << rangeToCoord[sz] << " from max of mesh " + << rangeZone[sz] << endl; + } + } + + + // Sort the points + // ~~~~~~~~~~~~~~~ + + // Count all the points inbetween rangeI and rangeI+1 + labelList nRangePoints(rangeToCoord.size(), 0); + + forAll(meshCoords, pointI) + { + label rangeI = findLower(rangeToCoord, meshCoords[pointI]); + + if (rangeI == -1 || rangeI == rangeToCoord.size()-1) + { + FatalErrorIn + ( + "displacementInterpolationFvMotionSolver::" + "displacementInterpolationFvMotionSolver" + "(const polyMesh&, Istream&)" + ) << "Did not find point " << points0_[pointI] + << " coordinate " << meshCoords[pointI] + << " in ranges " << rangeToCoord + << abort(FatalError); + } + nRangePoints[rangeI]++; + } + + if (debug) + { + for (label rangeI = 0; rangeI < rangeToCoord.size()-1; rangeI++) + { + // Get the two zones bounding the range + Pout<< "direction " << dir << " : " + << "range from " << rangeToCoord[rangeI] + << " to " << rangeToCoord[rangeI+1] + << " contains " << nRangePoints[rangeI] + << " points." << endl; + } + } + + // Sort + rangePoints.setSize(nRangePoints.size()); + rangeWeights.setSize(nRangePoints.size()); + forAll(rangePoints, rangeI) + { + rangePoints[rangeI].setSize(nRangePoints[rangeI]); + rangeWeights[rangeI].setSize(nRangePoints[rangeI]); + } + nRangePoints = 0; + forAll(meshCoords, pointI) + { + label rangeI = findLower(rangeToCoord, meshCoords[pointI]); + label& nPoints = nRangePoints[rangeI]; + rangePoints[rangeI][nPoints] = pointI; + rangeWeights[rangeI][nPoints] = + (meshCoords[pointI]-rangeToCoord[rangeI]) + / (rangeToCoord[rangeI+1]-rangeToCoord[rangeI]); + nPoints++; + } + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::displacementInterpolationFvMotionSolver::~displacementInterpolationFvMotionSolver() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::pointField> +Foam::displacementInterpolationFvMotionSolver::curPoints() const +{ + if (mesh().nPoints() != points0_.size()) + { + FatalErrorIn + ( + "displacementInterpolationFvMotionSolver::curPoints() const" + ) << "The number of points in the mesh seems to have changed." << endl + << "In constant/polyMesh there are " << points0_.size() + << " points; in the current mesh there are " << mesh().nPoints() + << " points." << exit(FatalError); + } + + tmp<pointField> tcurPoints(new pointField(points0_)); + pointField& curPoints = tcurPoints(); + + // Interpolate the diplacement of the face zones. + vectorField zoneDisp(displacements_.size(), vector::zero); + forAll(zoneDisp, zoneI) + { + if (times_[zoneI].size() > 0) + { + zoneDisp[zoneI] = interpolateXY + ( + mesh().time().value(), + times_[zoneI], + displacements_[zoneI] + ); + } + } + if (debug) + { + Pout<< "Zone displacements:" << zoneDisp << endl; + } + + + // Interpolate the point location + for (direction dir = 0; dir < vector::nComponents; dir++) + { + const labelList& rangeZone = rangeToZone_[dir]; + const labelListList& rangePoints = rangeToPoints_[dir]; + const List<scalarField>& rangeWeights = rangeToWeights_[dir]; + + for (label rangeI = 0; rangeI < rangeZone.size()-1; rangeI++) + { + const labelList& rPoints = rangePoints[rangeI]; + const scalarField& rWeights = rangeWeights[rangeI]; + + // Get the two zones bounding the range + label minZoneI = rangeZone[rangeI]; + //vector minDisp = + // (minZoneI == -1 ? vector::zero : zoneDisp[minZoneI]); + scalar minDisp = (minZoneI == -1 ? 0.0 : zoneDisp[minZoneI][dir]); + label maxZoneI = rangeZone[rangeI+1]; + //vector maxDisp = + // (maxZoneI == -1 ? vector::zero : zoneDisp[maxZoneI]); + scalar maxDisp = (maxZoneI == -1 ? 0.0 : zoneDisp[maxZoneI][dir]); + + forAll(rPoints, i) + { + label pointI = rPoints[i]; + scalar w = rWeights[i]; + //curPoints[pointI] += (1.0-w)*minDisp+w*maxDisp; + curPoints[pointI][dir] += (1.0-w)*minDisp+w*maxDisp; + } + } + } + return tcurPoints; +} + + +void Foam::displacementInterpolationFvMotionSolver::updateMesh +( + const mapPolyMesh& mpm +) +{ + fvMotionSolver::updateMesh(mpm); + + // Map points0_. Bit special since we somehow have to come up with + // a sensible points0 position for introduced points. + // Find out scaling between points0 and current points + + // Get the new points either from the map or the mesh + const pointField& points = + ( + mpm.hasMotionPoints() + ? mpm.preMotionPoints() + : fvMesh_.points() + ); + + // Note: boundBox does reduce + const boundBox bb0(points0_, true); + const vector span0(bb0.max()-bb0.min()); + const boundBox bb(points, true); + const vector span(bb.max()-bb.min()); + + vector scaleFactors(cmptDivide(span0, span)); + + pointField newPoints0(mpm.pointMap().size()); + + forAll(newPoints0, pointI) + { + label oldPointI = mpm.pointMap()[pointI]; + + if (oldPointI >= 0) + { + label masterPointI = mpm.reversePointMap()[oldPointI]; + + if (masterPointI == pointI) + { + newPoints0[pointI] = points0_[oldPointI]; + } + else + { + // New point. Assume motion is scaling. + newPoints0[pointI] = + points0_[oldPointI] + + cmptMultiply + ( + scaleFactors, + points[pointI]-points[masterPointI] + ); + } + } + else + { + FatalErrorIn + ( + "displacementLaplacianFvMotionSolver::updateMesh" + "(const mapPolyMesh& mpm)" + ) << "Cannot work out coordinates of introduced vertices." + << " New vertex " << pointI << " at coordinate " + << points[pointI] << exit(FatalError); + } + } + points0_.transfer(newPoints0); +} + + +// ************************************************************************* // diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.H new file mode 100644 index 0000000000000000000000000000000000000000..c3ad1b6d0e714923edf08bccd62b2569920c4830 --- /dev/null +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.H @@ -0,0 +1,156 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::displacementInterpolationFvMotionSolver + +Description + Mesh motion solver for an fvMesh. Scales inbetween motion prescribed on + faceZones. Works out per point the distance between the bounding + face zones (in all three directions) at the start and then every time + step + - moves the faceZones based on tables + - interpolates the displacement of all points based on the + faceZone motion. + + Tables are in the constant/tables directory. + + Note: could be a motionSolver - does not use any fvMesh structure. + +SourceFiles + displacementInterpolationFvMotionSolver.C + +\*---------------------------------------------------------------------------*/ + +#ifndef displacementInterpolationFvMotionSolver_H +#define displacementInterpolationFvMotionSolver_H + +#include "fvMotionSolver.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class displacementInterpolationFvMotionSolver Declaration +\*---------------------------------------------------------------------------*/ + +class displacementInterpolationFvMotionSolver +: + public fvMotionSolver +{ + // Private data + + //- Reference point field + pointField points0_; + + //- Additional settings for motion solver + dictionary dynamicMeshCoeffs_; + + + // Face zone information (note: could pack these to only contain + // used zones) + + //- Interpolation table. From faceZone to times. + List<scalarField> times_; + + //- Interpolation table. From faceZone to displacements. + List<vectorField> displacements_; + + // Range information. + + //- Per direction, per range the index of the lower + // faceZone + FixedList<labelList, 3> rangeToZone_; + + //- Per direction, per range the points that are in it + FixedList<labelListList, 3> rangeToPoints_; + + //- Per direction, per range the weight of the points relative + // to this and the next range. + FixedList<List<scalarField>, 3> rangeToWeights_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + displacementInterpolationFvMotionSolver + ( + const displacementInterpolationFvMotionSolver& + ); + + //- Disallow default bitwise assignment + void operator=(const displacementInterpolationFvMotionSolver&); + + +public: + + //- Runtime type information + TypeName("displacementInterpolation"); + + + // Constructors + + displacementInterpolationFvMotionSolver + ( + const polyMesh& mesh, + Istream& msData + ); + + + // Destructor + + ~displacementInterpolationFvMotionSolver(); + + + // Member Functions + + //- Return reference to the reference field + const pointField& points0() const + { + return points0_; + } + + //- Return point location obtained from the current motion field + virtual tmp<pointField> curPoints() const; + + //- Solve for motion + virtual void solve() + {} + + //- Update topology + virtual void updateMesh(const mapPolyMesh&); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //