def _createFields(runTime, mesh): from Foam.OpenFOAM import ext_Info, nl from Foam.OpenFOAM import IOdictionary, IOobject, word, fileName from Foam.finiteVolume import volScalarField ext_Info() << "Reading field p\n" << nl p = volScalarField( IOobject(word("p"), fileName(runTime.timeName()), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE), mesh) ext_Info() << "Reading field U\n" << nl from Foam.finiteVolume import volVectorField U = volVectorField( IOobject(word("U"), fileName(runTime.timeName()), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE), mesh) from Foam.finiteVolume.cfdTools.incompressible import createPhi phi = createPhi(runTime, mesh, U) pRefCell = 0 pRefValue = 0.0 from Foam.finiteVolume import setRefCell pRefCell, pRefValue = setRefCell(p, mesh.solutionDict().subDict(word("PISO")), pRefCell, pRefValue) from Foam.transportModels import singlePhaseTransportModel laminarTransport = singlePhaseTransportModel(U, phi) from Foam import incompressible turbulence = incompressible.turbulenceModel.New(U, phi, laminarTransport) return p, U, phi, turbulence, pRefCell, pRefValue, laminarTransport
def _createFields(runTime, mesh): from Foam.OpenFOAM import ext_Info, nl from Foam.OpenFOAM import IOdictionary, IOobject, word, fileName from Foam.finiteVolume import volScalarField ext_Info() << "Reading field p\n" << nl p = volScalarField( IOobject(word("p"), fileName(runTime.timeName()), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE), mesh ) ext_Info() << "Reading field U\n" << nl from Foam.finiteVolume import volVectorField U = volVectorField( IOobject(word("U"), fileName(runTime.timeName()), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE), mesh ) from Foam.finiteVolume.cfdTools.incompressible import createPhi phi = createPhi(runTime, mesh, U) from Foam.transportModels import singlePhaseTransportModel fluid = singlePhaseTransportModel(U, phi) pRefCell = 0 pRefValue = 0.0 from Foam.finiteVolume import setRefCell pRefCell, pRefValue = setRefCell(p, mesh.solutionDict().subDict(word("PISO")), pRefCell, pRefValue) return p, U, phi, fluid, pRefCell, pRefValue
def create_fields( runTime, mesh ): from Foam.OpenFOAM import ext_Info, nl ext_Info() << "Reading field p\n" << nl from Foam.OpenFOAM import IOobject, word, fileName from Foam.finiteVolume import volScalarField p = volScalarField( IOobject( word( "p" ), fileName( runTime.timeName() ), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE ), mesh ) ext_Info() << "Reading field U\n" << nl from Foam.finiteVolume import volVectorField U = volVectorField( IOobject( word( "U" ), fileName( runTime.timeName() ), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE ), mesh ) from Foam.finiteVolume.cfdTools.incompressible import createPhi phi = createPhi( runTime, mesh, U ) pRefCell = 0 pRefValue = 0.0 from Foam.finiteVolume import setRefCell pRefCell, pRefValue = setRefCell( p, mesh.solutionDict().subDict( word( "SIMPLE" ) ), pRefCell, pRefValue ) from Foam.transportModels import singlePhaseTransportModel laminarTransport = singlePhaseTransportModel( U, phi ) from Foam import incompressible turbulence = incompressible.RASModel.New( U, phi, laminarTransport ) from Foam.finiteVolume import porousZones pZones = porousZones( mesh ) from Foam.OpenFOAM import Switch pressureImplicitPorosity = Switch( False ) nUCorr = 0 if pZones.size(): # nUCorrectors for pressureImplicitPorosity if (mesh.solutionDict().subDict( word( "SIMPLE" ) ).found( word( "nUCorrectors" ) ) ) : from Foam.OpenFOAM import readInt nUCorr = readInt( mesh.solutionDict().subDict( word( "SIMPLE" ) ).lookup( word( "nUCorrectors" ) ) ) pass if nUCorr > 0 : pressureImplicitPorosity = True pass pass return p, U, phi, pRefCell, pRefValue, laminarTransport, turbulence, pZones, pressureImplicitPorosity, nUCorr
def create_fields(runTime, mesh): from Foam.OpenFOAM import ext_Info, nl ext_Info() << "Reading field p\n" << nl from Foam.OpenFOAM import IOobject, word, fileName from Foam.finiteVolume import volScalarField p = volScalarField( IOobject(word("p"), fileName(runTime.timeName()), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE), mesh) ext_Info() << "Reading field U\n" << nl from Foam.finiteVolume import volVectorField U = volVectorField( IOobject(word("U"), fileName(runTime.timeName()), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE), mesh) from Foam.finiteVolume.cfdTools.incompressible import createPhi phi = createPhi(runTime, mesh, U) pRefCell = 0 pRefValue = 0.0 from Foam.finiteVolume import setRefCell pRefCell, pRefValue = setRefCell( p, mesh.solutionDict().subDict(word("SIMPLE")), pRefCell, pRefValue) from Foam.transportModels import singlePhaseTransportModel laminarTransport = singlePhaseTransportModel(U, phi) from Foam import incompressible turbulence = incompressible.RASModel.New(U, phi, laminarTransport) from Foam.finiteVolume import porousZones pZones = porousZones(mesh) from Foam.OpenFOAM import Switch pressureImplicitPorosity = Switch(False) nUCorr = 0 if pZones.size(): # nUCorrectors for pressureImplicitPorosity if (mesh.solutionDict().subDict(word("SIMPLE")).found( word("nUCorrectors"))): from Foam.OpenFOAM import readInt nUCorr = readInt(mesh.solutionDict().subDict( word("SIMPLE")).lookup(word("nUCorrectors"))) pass if nUCorr > 0: pressureImplicitPorosity = True pass pass return p, U, phi, pRefCell, pRefValue, laminarTransport, turbulence, pZones, pressureImplicitPorosity, nUCorr
def _createFields( runTime, mesh ): from Foam.OpenFOAM import ext_Info, nl from Foam.OpenFOAM import IOdictionary, IOobject, word, fileName from Foam.finiteVolume import volScalarField ext_Info() << "Reading field p\n" << nl p = volScalarField( IOobject( word( "p" ), fileName( runTime.timeName() ), mesh(), IOobject.MUST_READ, IOobject.AUTO_WRITE ), mesh() ) from Foam.finiteVolume import volVectorField ext_Info() << "Reading field U\n" << nl U = volVectorField( IOobject( word( "U" ), fileName( runTime.timeName() ), mesh() , IOobject.MUST_READ, IOobject.AUTO_WRITE ), mesh() ) from Foam.finiteVolume.cfdTools.incompressible import createPhi phi = createPhi( runTime, mesh(), U ) pRefCell = 0 pRefValue = 0.0 from Foam.finiteVolume import setRefCell pRefCell, pRefValue = setRefCell( p, mesh.solutionDict().subDict( word( "PIMPLE" ) ), pRefCell, pRefValue ) from Foam.transportModels import singlePhaseTransportModel laminarTransport = singlePhaseTransportModel( U, phi ) from Foam import incompressible turbulence = incompressible.turbulenceModel.New( U, phi, laminarTransport ) from Foam.finiteVolume import zeroGradientFvPatchScalarField ext_Info() << "Reading field rAU if present\n" << nl rAU = volScalarField( IOobject( word( "rAU" ), fileName( runTime.timeName() ), mesh(), IOobject.READ_IF_PRESENT, IOobject.AUTO_WRITE ), mesh(), runTime.deltaT(), zeroGradientFvPatchScalarField.typeName ) return p, U, phi, laminarTransport, turbulence, rAU, pRefCell, pRefValue
def readTransportProperties(U, phi): from Foam.transportModels import singlePhaseTransportModel laminarTransport = singlePhaseTransportModel(U, phi) from Foam.OpenFOAM import dimensionedScalar, word # Thermal expansion coefficient [1/K] beta = dimensionedScalar(laminarTransport.lookup(word("beta"))) # Reference temperature [K] TRef = dimensionedScalar(laminarTransport.lookup(word("TRef"))) # Laminar Prandtl number Pr = dimensionedScalar(laminarTransport.lookup(word("Pr"))) # Turbulent Prandtl number Prt = dimensionedScalar(laminarTransport.lookup(word("Prt"))) return laminarTransport, beta, TRef, Pr, Prt
def readTransportProperties( U, phi ): from Foam.transportModels import singlePhaseTransportModel laminarTransport = singlePhaseTransportModel( U, phi ) from Foam.OpenFOAM import dimensionedScalar, word # Thermal expansion coefficient [1/K] beta = dimensionedScalar( laminarTransport.lookup( word( "beta" ) ) ) # Reference temperature [K] TRef = dimensionedScalar( laminarTransport.lookup( word( "TRef" ) ) ) # Laminar Prandtl number Pr = dimensionedScalar( laminarTransport.lookup( word( "Pr" ) ) ) # Turbulent Prandtl number Prt = dimensionedScalar( laminarTransport.lookup( word( "Prt" ) ) ) return laminarTransport, beta, TRef,Pr, Prt
def _createFields(runTime, mesh): from Foam.OpenFOAM import ext_Info, nl from Foam.OpenFOAM import IOdictionary, IOobject, word, fileName from Foam.finiteVolume import volScalarField ext_Info() << "Reading field p\n" << nl p = volScalarField( IOobject(word("p"), fileName(runTime.timeName()), mesh(), IOobject.MUST_READ, IOobject.AUTO_WRITE), mesh()) from Foam.finiteVolume import volVectorField ext_Info() << "Reading field U\n" << nl U = volVectorField( IOobject(word("U"), fileName(runTime.timeName()), mesh(), IOobject.MUST_READ, IOobject.AUTO_WRITE), mesh()) from Foam.finiteVolume.cfdTools.incompressible import createPhi phi = createPhi(runTime, mesh(), U) pRefCell = 0 pRefValue = 0.0 from Foam.finiteVolume import setRefCell pRefCell, pRefValue = setRefCell( p, mesh.solutionDict().subDict(word("PIMPLE")), pRefCell, pRefValue) from Foam.transportModels import singlePhaseTransportModel laminarTransport = singlePhaseTransportModel(U, phi) from Foam import incompressible turbulence = incompressible.turbulenceModel.New(U, phi, laminarTransport) from Foam.finiteVolume import zeroGradientFvPatchScalarField ext_Info() << "Reading field rAU if present\n" << nl rAU = volScalarField( IOobject(word("rAU"), fileName(runTime.timeName()), mesh(), IOobject.READ_IF_PRESENT, IOobject.AUTO_WRITE), mesh(), runTime.deltaT(), zeroGradientFvPatchScalarField.typeName) return p, U, phi, laminarTransport, turbulence, rAU, pRefCell, pRefValue
def _createFields(runTime, mesh): from Foam.OpenFOAM import ext_Info, nl from Foam.OpenFOAM import IOdictionary, IOobject, word, fileName from Foam.finiteVolume import volVectorField ext_Info() << "Reading field U\n" << nl U = volVectorField( IOobject(word("U"), fileName(runTime.timeName()), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE), mesh) ext_Info() << "Creating face flux\n" << nl from Foam.OpenFOAM import dimensionedScalar from Foam.finiteVolume import surfaceScalarField phi = surfaceScalarField( IOobject(word("phi"), fileName(runTime.timeName()), mesh, IOobject.NO_READ, IOobject.NO_WRITE), mesh, dimensionedScalar(word("zero"), mesh.Sf().dimensions() * U.dimensions(), 0.0)) from Foam.transportModels import singlePhaseTransportModel laminarTransport = singlePhaseTransportModel(U, phi) from Foam import incompressible turbulence = incompressible.RASModel.New(U, phi, laminarTransport) transportProperties = IOdictionary( IOobject(word("transportProperties"), fileName(runTime.constant()), mesh, IOobject.MUST_READ, IOobject.NO_WRITE)) from Foam.OpenFOAM import dimensionedVector, vector Ubar = dimensionedVector(transportProperties.lookup(word("Ubar"))) flowDirection = (Ubar / Ubar.mag()).ext_value() flowMask = flowDirection.sqr() nWallFaces = 0.0 from Foam.OpenFOAM import vector wallNormal = vector.zero patches = mesh.boundary() for patchi in range(mesh.boundary().size()): currPatch = patches[patchi] from Foam.finiteVolume import wallFvPatch if wallFvPatch.ext_isA(currPatch): for facei in range(currPatch.size()): nWallFaces = nWallFaces + 1 if nWallFaces == 1: wallNormal = -mesh.Sf().ext_boundaryField( )[patchi][facei] / mesh.magSf().ext_boundaryField( )[patchi][facei] pass elif nWallFaces == 2: wallNormal2 = mesh.Sf().ext_boundaryField( )[patchi][facei] / mesh.magSf().ext_boundaryField( )[patchi][facei] #- Check that wall faces are parallel from Foam.OpenFOAM import mag if mag(wallNormal & wallNormal2) > 1.01 or mag(wallNormal & wallNormal2) < 0.99: ext_Info( ) << "boundaryFoam: wall faces are not parallel" << nl import os os.abort() pass pass else: ext_Info( ) << "boundaryFoam: number of wall faces > 2" << nl import os os.abort() pass pass pass #- create position array for graph generation y = wallNormal & mesh.C().internalField() from Foam.OpenFOAM import dimensionSet, vector, word gradP = dimensionedVector(word("gradP"), dimensionSet(0.0, 1.0, -2.0, 0.0, 0.0), vector(0.0, 0.0, 0.0)) return U, phi, laminarTransport, turbulence, Ubar, wallNormal, flowDirection, flowMask, y, gradP
def _createFields( runTime, mesh ): from Foam.OpenFOAM import ext_Info, nl from Foam.OpenFOAM import IOdictionary, IOobject, word, fileName from Foam.finiteVolume import volVectorField ext_Info() << "Reading field U\n" << nl U = volVectorField( IOobject( word( "U" ), fileName( runTime.timeName() ), mesh, IOobject.MUST_READ, IOobject.AUTO_WRITE ), mesh ) ext_Info() << "Creating face flux\n" << nl from Foam.OpenFOAM import dimensionedScalar from Foam.finiteVolume import surfaceScalarField phi = surfaceScalarField( IOobject( word( "phi" ), fileName( runTime.timeName() ), mesh, IOobject.NO_READ, IOobject.NO_WRITE ), mesh, dimensionedScalar( word( "zero" ), mesh.Sf().dimensions()*U.dimensions(), 0.0) ) from Foam.transportModels import singlePhaseTransportModel laminarTransport = singlePhaseTransportModel( U, phi ) from Foam import incompressible turbulence = incompressible.RASModel.New( U, phi, laminarTransport ) transportProperties = IOdictionary( IOobject( word( "transportProperties" ), fileName( runTime.constant() ), mesh, IOobject.MUST_READ, IOobject.NO_WRITE ) ) from Foam.OpenFOAM import dimensionedVector, vector Ubar = dimensionedVector( transportProperties.lookup( word( "Ubar" ) ) ) flowDirection = ( Ubar / Ubar.mag() ).ext_value() flowMask = flowDirection.sqr() nWallFaces = 0.0 from Foam.OpenFOAM import vector wallNormal = vector.zero patches = mesh.boundary() for patchi in range( mesh.boundary().size() ): currPatch = patches[patchi] from Foam.finiteVolume import wallFvPatch if wallFvPatch.ext_isType( currPatch ): for facei in range( currPatch.size() ): nWallFaces = nWallFaces +1 if nWallFaces == 1: wallNormal = - mesh.Sf().ext_boundaryField()[patchi][facei] / mesh.magSf().ext_boundaryField()[patchi][facei] pass elif nWallFaces == 2: wallNormal2 = mesh.Sf().ext_boundaryField()[patchi][facei] / mesh.magSf().ext_boundaryField()[patchi][facei] #- Check that wall faces are parallel from Foam.OpenFOAM import mag if mag(wallNormal & wallNormal2) > 1.01 or mag(wallNormal & wallNormal2) < 0.99: ext_Info() << "boundaryFoam: wall faces are not parallel" << nl import os os.abort() pass pass else: ext_Info() << "boundaryFoam: number of wall faces > 2" << nl import os os.abort() pass pass pass #- create position array for graph generation y = wallNormal & mesh.C().internalField() from Foam.OpenFOAM import dimensionSet, vector, word gradP = dimensionedVector( word( "gradP" ), dimensionSet( 0.0, 1.0, -2.0, 0.0, 0.0 ), vector( 0.0, 0.0, 0.0 ) ) return U, phi, laminarTransport, turbulence, Ubar, wallNormal, flowDirection, flowMask, y, gradP