diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/Allwmake b/applications/solvers/stressAnalysis/solidDisplacementFoam/Allwmake new file mode 100755 index 0000000000..81a330a6e5 --- /dev/null +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/Allwmake @@ -0,0 +1,12 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Parse arguments for library compilation +. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments + +wmake $targetType solidDisplacementThermo + +wmake $targetType +wmake $targetType solidEquilibriumDisplacementFoam + +#------------------------------------------------------------------------------ diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/Make/options b/applications/solvers/stressAnalysis/solidDisplacementFoam/Make/options index d3ab5a843b..52346e3cfa 100644 --- a/applications/solvers/stressAnalysis/solidDisplacementFoam/Make/options +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/Make/options @@ -1,11 +1,16 @@ EXE_INC = \ -I. \ + -IsolidDisplacementThermo \ -IderivedFvPatchFields/tractionDisplacement \ -IderivedFvPatchFields/hydrostaticDisplacement \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ -lfiniteVolume \ + -lsolidThermo \ + -lsolidDisplacementThermo \ -lfvOptions \ -lmeshTools diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/calculateStress.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/calculateStress.H index d3bdb20ee4..0703b841e2 100644 --- a/applications/solvers/stressAnalysis/solidDisplacementFoam/calculateStress.H +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/calculateStress.H @@ -1,39 +1,39 @@ - if (runTime.writeTime()) +if (runTime.writeTime()) +{ + volSymmTensorField sigma + ( + IOobject + ( + "sigma", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + rho*sigmaD + ); + + if (thermo.thermalStress()) { - volSymmTensorField sigma - ( - IOobject - ( - "sigma", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - rho*sigmaD - ); - - if (thermalStress) - { - const volScalarField& T = Tptr(); - sigma = sigma - I*(rho*threeKalpha*T); - } - - volScalarField sigmaEq - ( - IOobject - ( - "sigmaEq", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - sqrt((3.0/2.0)*magSqr(dev(sigma))) - ); - - Info<< "Max sigmaEq = " << max(sigmaEq).value() - << endl; - - runTime.write(); + const volScalarField& T = Tptr(); + sigma = sigma - I*(rho*threeKalpha*T); } + + volScalarField sigmaEq + ( + IOobject + ( + "sigmaEq", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + sqrt((3.0/2.0)*magSqr(dev(sigma))) + ); + + Info<< "Max sigmaEq = " << max(sigmaEq).value() + << endl; + + runTime.write(); +} diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/createFieldRefs.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/createFieldRefs.H new file mode 100644 index 0000000000..b206dd7cf0 --- /dev/null +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/createFieldRefs.H @@ -0,0 +1 @@ +const volScalarField& rho(thermo.rho()); diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/createFields.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/createFields.H index f5adee051c..40b16ad481 100644 --- a/applications/solvers/stressAnalysis/solidDisplacementFoam/createFields.H +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/createFields.H @@ -1,6 +1,5 @@ -#include "readMechanicalProperties.H" -#include "readThermalProperties.H" -mesh.Sf(); +#include "readThermophysicalProperties.H" + Info<< "Reading field D\n" << endl; volVectorField D ( @@ -18,7 +17,7 @@ volVectorField D autoPtr Tptr(nullptr); -if (thermalStress) +if (thermo.thermalStress()) { Info<< "Reading field T\n" << endl; Tptr.reset diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/derivedFvPatchFields/tractionDisplacement/tractionDisplacementFvPatchVectorField.C b/applications/solvers/stressAnalysis/solidDisplacementFoam/derivedFvPatchFields/tractionDisplacement/tractionDisplacementFvPatchVectorField.C index 3b46083d27..8cc8029286 100644 --- a/applications/solvers/stressAnalysis/solidDisplacementFoam/derivedFvPatchFields/tractionDisplacement/tractionDisplacementFvPatchVectorField.C +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/derivedFvPatchFields/tractionDisplacement/tractionDisplacementFvPatchVectorField.C @@ -24,7 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "tractionDisplacementFvPatchVectorField.H" -#include "volFields.H" +#include "solidDisplacementThermo.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -138,59 +138,50 @@ void Foam::tractionDisplacementFvPatchVectorField::updateCoeffs() return; } - const dictionary& mechanicalProperties = - db().lookupObject("mechanicalProperties"); + const label patchi = patch().index(); - const dictionary& thermalProperties = - db().lookupObject("thermalProperties"); + const solidDisplacementThermo& thermo = + db().lookupObject + ( + solidDisplacementThermo::dictName + ); + const scalarField& E = thermo.E(patchi); + const scalarField& nu = thermo.nu(patchi); - const fvPatchField& rho = - patch().lookupPatchField("rho"); + const scalarField mu(E/(2.0*(1.0 + nu))); + const scalarField lambda + ( + thermo.planeStress() + ? nu*E/((1 + nu)*(1 - nu)) + : nu*E/((1 + nu)*(1 - 2*nu)) + ); + const scalarField threeK + ( + thermo.planeStress() + ? E/(1 - nu) + : E/(1 - 2*nu) + ); - const fvPatchField& rhoE = - patch().lookupPatchField("E"); + const scalarField twoMuLambda(2*mu + lambda); - const fvPatchField& nu = - patch().lookupPatchField("nu"); - - scalarField E(rhoE/rho); - scalarField mu(E/(2.0*(1.0 + nu))); - scalarField lambda(nu*E/((1.0 + nu)*(1.0 - 2.0*nu))); - scalarField threeK(E/(1.0 - 2.0*nu)); - - Switch planeStress(mechanicalProperties.lookup("planeStress")); - - if (planeStress) - { - lambda = nu*E/((1.0 + nu)*(1.0 - nu)); - threeK = E/(1.0 - nu); - } - - scalarField twoMuLambda(2*mu + lambda); - - vectorField n(patch().nf()); + const vectorField n(patch().nf()); const fvPatchField& sigmaD = patch().lookupPatchField("sigmaD"); gradient() = ( - (traction_ - pressure_*n)/rho + (traction_ - pressure_*n) + twoMuLambda*fvPatchField::snGrad() - (n & sigmaD) )/twoMuLambda; - Switch thermalStress(thermalProperties.lookup("thermalStress")); - - if (thermalStress) + if (thermo.thermalStress()) { - const fvPatchField& threeKalpha= - patch().lookupPatchField("threeKalpha"); + const scalarField& alphav = thermo.alphav(patchi); - const fvPatchField& T = - patch().lookupPatchField("T"); - - gradient() += n*threeKalpha*T/twoMuLambda; + gradient() += + n*threeK*alphav*thermo.T().boundaryField()[patchi]/twoMuLambda; } fixedGradientFvPatchVectorField::updateCoeffs(); diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/readMechanicalProperties.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/readMechanicalProperties.H deleted file mode 100644 index 961e771912..0000000000 --- a/applications/solvers/stressAnalysis/solidDisplacementFoam/readMechanicalProperties.H +++ /dev/null @@ -1,196 +0,0 @@ - Info<< "Reading mechanical properties\n" << endl; - - IOdictionary mechanicalProperties - ( - IOobject - ( - "mechanicalProperties", - runTime.constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); - - const dictionary& rhoDict(mechanicalProperties.subDict("rho")); - word rhoType(rhoDict.lookup("type")); - - autoPtr rhoPtr; - - IOobject rhoIO - ( - "rho", - runTime.timeName(0), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ); - - if (rhoType == "uniform") - { - scalar rhoValue(readScalar(rhoDict.lookup("value"))); - - rhoPtr.reset - ( - new volScalarField - ( - rhoIO, - mesh, - dimensionedScalar - ( - dimMass/dimVolume, - rhoValue - ) - ) - ); - } - else if (rhoType == "field") - { - rhoIO.readOpt() = IOobject::MUST_READ; - - rhoPtr.reset - ( - new volScalarField - ( - rhoIO, - mesh - ) - ); - } - else - { - FatalErrorInFunction - << "Valid type entries are uniform or field for rho" - << abort(FatalError); - } - - volScalarField& rho = rhoPtr(); - - const dictionary& EDict(mechanicalProperties.subDict("E")); - word EType(EDict.lookup("type")); - - autoPtr EPtr; - - IOobject EHeader - ( - "E", - runTime.timeName(0), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ); - - if (EType == "uniform") - { - scalar rhoEValue(readScalar(EDict.lookup("value"))); - - EPtr.reset - ( - new volScalarField - ( - EHeader, - mesh, - dimensionedScalar - ( - dimMass/dimLength/sqr(dimTime), - rhoEValue - ) - ) - ); - } - else if (EType == "field") - { - EHeader.readOpt() = IOobject::MUST_READ; - - EPtr.reset - ( - new volScalarField - ( - EHeader, - mesh - ) - ); - } - else - { - FatalErrorInFunction - << "Valid type entries are uniform or field for E" - << abort(FatalError); - } - - volScalarField& rhoE = EPtr(); - - autoPtr nuPtr; - - IOobject nuIO - ( - "nu", - runTime.timeName(0), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ); - - const dictionary& nuDict(mechanicalProperties.subDict("nu")); - word nuType(nuDict.lookup("type")); - - if (nuType == "uniform") - { - scalar nuValue(readScalar(nuDict.lookup("value"))); - nuPtr.reset - ( - new volScalarField - ( - nuIO, - mesh, - dimensionedScalar - ( - dimless, - nuValue - ) - ) - ); - } - else if (nuType == "field") - { - nuIO.readOpt() = IOobject::MUST_READ; - nuPtr.reset - ( - new volScalarField - ( - nuIO, - mesh - ) - ); - } - else - { - FatalErrorInFunction - << "Valid type entries are uniform or field for nu" - << abort(FatalError); - } - - volScalarField& nu = nuPtr(); - - Info<< "Normalising E : E/rho\n" << endl; - volScalarField E(rhoE/rho); - - Info<< "Calculating Lame's coefficients\n" << endl; - - volScalarField mu(E/(2.0*(1.0 + nu))); - volScalarField lambda(nu*E/((1.0 + nu)*(1.0 - 2.0*nu))); - volScalarField threeK(E/(1.0 - 2.0*nu)); - - Switch planeStress(mechanicalProperties.lookup("planeStress")); - - if (planeStress) - { - Info<< "Plane Stress\n" << endl; - - lambda = nu*E/((1.0 + nu)*(1.0 - nu)); - threeK = E/(1.0 - nu); - } - else - { - Info<< "Plane Strain\n" << endl; - } diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/readThermalProperties.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/readThermalProperties.H deleted file mode 100644 index 7b53ce2295..0000000000 --- a/applications/solvers/stressAnalysis/solidDisplacementFoam/readThermalProperties.H +++ /dev/null @@ -1,219 +0,0 @@ -Info<< "Reading thermal properties\n" << endl; - -IOdictionary thermalProperties -( - IOobject - ( - "thermalProperties", - runTime.constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) -); - -Switch thermalStress(thermalProperties.lookup("thermalStress")); - -volScalarField threeKalpha -( - IOobject - ( - "threeKalpha", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh, - dimensionedScalar(dimensionSet(0, 2, -2 , -1, 0), 0) -); - - -volScalarField DT -( - IOobject - ( - "DT", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh, - dimensionedScalar(dimensionSet(0, 2, -1 , 0, 0), 0) -); - - -// Cache "k" for use in thermal BCs -autoPtr rhoKPtr; - -if (thermalStress) -{ - IOobject CIO - ( - "C", - runTime.timeName(0), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ); - - autoPtr CPtr; - - const dictionary& CDict(thermalProperties.subDict("C")); - word CType(CDict.lookup("type")); - if (CType == "uniform") - { - scalar CValue(readScalar(CDict.lookup("value"))); - - CPtr.reset - ( - new volScalarField - ( - CIO, - mesh, - dimensionedScalar - ( - dimensionSet(0, 2, -2 , -1, 0), - CValue - ) - ) - ); - - } - else if (CType == "field") - { - CIO.readOpt() = IOobject::MUST_READ; - - CPtr.reset - ( - new volScalarField - ( - CIO, - mesh - ) - ); - } - else - { - FatalErrorInFunction - << "Valid type entries are uniform or field for C" - << abort(FatalError); - } - - volScalarField& C = CPtr(); - - IOobject rhoKIO - ( - "k", - runTime.timeName(0), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ); - - const dictionary& kDict(thermalProperties.subDict("k")); - word kType(kDict.lookup("type")); - if (kType == "uniform") - { - scalar rhoKValue(readScalar(kDict.lookup("value"))); - - rhoKPtr.reset - ( - new volScalarField - ( - rhoKIO, - mesh, - dimensionedScalar - ( - dimensionSet(1, 1, -3 , -1, 0), - rhoKValue - ) - ) - ); - - } - else if (kType == "field") - { - rhoKIO.readOpt() = IOobject::MUST_READ; - - rhoKPtr.reset - ( - new volScalarField - ( - rhoKIO, - mesh - ) - ); - } - else - { - FatalErrorInFunction - << "Valid type entries are uniform or field for K" - << abort(FatalError); - } - - volScalarField& rhoK = rhoKPtr(); - - autoPtr alphaPtr; - - IOobject alphaIO - ( - "alpha", - runTime.timeName(0), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ); - - - const dictionary& alphaDict(thermalProperties.subDict("alpha")); - word alphaType(alphaDict.lookup("type")); - - if (alphaType == "uniform") - { - scalar alphaValue(readScalar(alphaDict.lookup("value"))); - alphaPtr.reset - ( - new volScalarField - ( - alphaIO, - mesh, - dimensionedScalar - ( - inv(dimTemperature), - alphaValue - ) - ) - ); - } - else if (alphaType == "field") - { - alphaIO.readOpt() = IOobject::MUST_READ; - - alphaPtr.reset - ( - new volScalarField - ( - alphaIO, - mesh - ) - ); - } - else - { - FatalErrorInFunction - << "Valid type entries are uniform or field for alpha" - << abort(FatalError); - } - - volScalarField& alpha = alphaPtr(); - - Info<< "Normalising k : k/rho\n" << endl; - volScalarField k(rhoK/rho); - - Info<< "Calculating thermal coefficients\n" << endl; - - threeKalpha = threeK*alpha; - DT = k/C; -} diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/readThermophysicalProperties.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/readThermophysicalProperties.H new file mode 100644 index 0000000000..46e80d955c --- /dev/null +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/readThermophysicalProperties.H @@ -0,0 +1,29 @@ +Info<< "Reading thermophysical properties\n" << endl; + +solidDisplacementThermo thermo(mesh); + +const volScalarField& E(thermo.E()); +const volScalarField& nu(thermo.nu()); + +const volScalarField Cp(thermo.Cp()); +const volScalarField kappa(thermo.kappa()); + +Info<< "Calculating Lame's coefficients\n" << endl; + +const volScalarField mu(E/(2*(1 + nu))); + +const volScalarField lambda +( + thermo.planeStress() + ? nu*E/((1 + nu)*(1 - nu)) + : nu*E/((1 + nu)*(1 - 2*nu)) +); + +const volScalarField threeK +( + thermo.planeStress() + ? E/(1 - nu) + : E/(1 - 2*nu) +); + +const volScalarField threeKalpha("threeKalpha", threeK*thermo.alphav()); diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C index ae37b99386..31df2258f1 100644 --- a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,8 +36,8 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" +#include "solidDisplacementThermo.H" #include "fvOptions.H" -#include "Switch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -50,6 +50,7 @@ int main(int argc, char *argv[]) #include "createMesh.H" #include "createControls.H" #include "createFields.H" + #include "createFieldRefs.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -66,12 +67,14 @@ int main(int argc, char *argv[]) do { - if (thermalStress) + if (thermo.thermalStress()) { volScalarField& T = Tptr(); fvScalarMatrix TEqn ( - fvm::ddt(T) == fvm::laplacian(DT, T) + fvOptions(T) + fvm::ddt(rho, Cp, T) + == fvm::laplacian(kappa, T) + + fvOptions(rho*Cp, T) ); fvOptions.constrain(TEqn); @@ -84,14 +87,14 @@ int main(int argc, char *argv[]) { fvVectorMatrix DEqn ( - fvm::d2dt2(D) + fvm::d2dt2(rho, D) == fvm::laplacian(2*mu + lambda, D, "laplacian(DD,D)") + divSigmaExp - + fvOptions.d2dt2(D) + + rho*fvOptions.d2dt2(D) ); - if (thermalStress) + if (thermo.thermalStress()) { const volScalarField& T = Tptr(); DEqn += fvc::grad(threeKalpha*T); diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/Make/files b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/Make/files new file mode 100644 index 0000000000..fab0590bb7 --- /dev/null +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/Make/files @@ -0,0 +1,3 @@ +solidDisplacementThermo.C + +LIB = $(FOAM_LIBBIN)/libsolidDisplacementThermo diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/Make/options b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/Make/options new file mode 100644 index 0000000000..9149b94244 --- /dev/null +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/Make/options @@ -0,0 +1,8 @@ +EXE_INC = \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +EXE_LIBS = \ + -lfiniteVolume \ + -lsolidThermo diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/solidDisplacementThermo.C b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/solidDisplacementThermo.C new file mode 100644 index 0000000000..1890a80646 --- /dev/null +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/solidDisplacementThermo.C @@ -0,0 +1,515 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Copyright (C) 2019 OpenFOAM Foundation + \\/ 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 3 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, see . + +\*---------------------------------------------------------------------------*/ + +#include "solidDisplacementThermo.H" +#include "fvMesh.H" + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +namespace Foam +{ + defineTypeNameAndDebug(solidDisplacementThermo, 0); +} + + +void Foam::solidDisplacementThermo::readProperty(volScalarField& prop) const +{ + const dictionary& propDict(subDict(prop.name())); + const word propType(propDict.lookup("type")); + + if (propType == "uniform") + { + prop == dimensionedScalar + ( + prop.name(), + prop.dimensions(), + readScalar(propDict.lookup("value")) + ); + } + else if (propType == "field") + { + const volScalarField propField + ( + IOobject + ( + prop.name(), + prop.mesh().time().timeName(0), + prop.mesh(), + IOobject::MUST_READ, + IOobject::NO_WRITE + ), + prop.mesh() + ); + prop == propField; + } + else + { + FatalErrorInFunction + << "Valid type entries are uniform or field for " << prop.name() + << abort(FatalError); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::solidDisplacementThermo::solidDisplacementThermo +( + const fvMesh& mesh, + const word& phaseName +) +: + solidThermo(mesh, phaseName), + planeStress_(lookup("planeStress")), + thermalStress_(lookup("thermalStress")), + Cp_ + ( + IOobject + ( + phasePropertyName("Cp"), + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimEnergy/dimMass/dimTemperature + ), + kappa_ + ( + IOobject + ( + phasePropertyName("kappa"), + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + Cp_.dimensions()*dimensionSet(1, -1, -1, 0, 0) + ), + E_ + ( + IOobject + ( + phasePropertyName("E"), + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimPressure + ), + nu_ + ( + IOobject + ( + phasePropertyName("nu"), + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimless + ), + alphav_ + ( + IOobject + ( + phasePropertyName("alphav"), + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimless/dimTemperature + ) +{ + readProperty(rho_); + readProperty(Cp_); + readProperty(kappa_); + readProperty(E_); + readProperty(nu_); + readProperty(alphav_); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::solidDisplacementThermo::~solidDisplacementThermo() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp Foam::solidDisplacementThermo::rho() const +{ + return rho_; +} + + +Foam::tmp Foam::solidDisplacementThermo::rho +( + const label patchi +) const +{ + return rho_.boundaryField()[patchi]; +} + + +const Foam::volScalarField& Foam::solidDisplacementThermo::E() const +{ + return E_; +} + + +const Foam::scalarField& Foam::solidDisplacementThermo::E +( + const label patchi +) const +{ + return E_.boundaryField()[patchi]; +} + + +const Foam::volScalarField& Foam::solidDisplacementThermo::nu() const +{ + return nu_; +} + + +const Foam::scalarField& Foam::solidDisplacementThermo::nu +( + const label patchi +) const +{ + return nu_.boundaryField()[patchi]; +} + + +const Foam::volScalarField& Foam::solidDisplacementThermo::alphav() const +{ + return alphav_; +} + + +const Foam::scalarField& Foam::solidDisplacementThermo::alphav +( + const label patchi +) const +{ + return alphav_.boundaryField()[patchi]; +} + + +Foam::volScalarField& Foam::solidDisplacementThermo::he() +{ + NotImplemented; + return rho_; +} + + +const Foam::volScalarField& Foam::solidDisplacementThermo::he() const +{ + NotImplemented; + return rho_; +} + + +Foam::tmp Foam::solidDisplacementThermo::he +( + const scalarField& T, + const labelList& cells +) const +{ + NotImplemented; + return tmp(nullptr); +} + +Foam::tmp Foam::solidDisplacementThermo::he +( + const volScalarField& p, + const volScalarField& T +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::he +( + const scalarField& T, + const label patchi +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::ha() const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::ha +( + const volScalarField& p, + const volScalarField& T +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::ha +( + const scalarField& T, + const label patchi +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::ha +( + const scalarField& T, + const labelList& cells +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::hc() const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::THE +( + const scalarField& he, + const scalarField& T0, + const labelList& cells +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::THE +( + const scalarField& he, + const scalarField& T0, + const label patchi +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::Cp() const +{ + return Cp_; +} + + +Foam::tmp Foam::solidDisplacementThermo::Cp +( + const scalarField& T, + const label patchi +) const +{ + return Cp_.boundaryField()[patchi]; +} + + +Foam::tmp Foam::solidDisplacementThermo::Cv() const +{ + return Cp_; +} + + +Foam::tmp Foam::solidDisplacementThermo::Cv +( + const scalarField& T, + const label patchi +) const +{ + return Cp_.boundaryField()[patchi]; +} + + +Foam::tmp Foam::solidDisplacementThermo::Cpv() const +{ + return Cp_; +} + + +Foam::tmp Foam::solidDisplacementThermo::Cpv +( + const scalarField& T, + const label patchi +) const +{ + return Cp_.boundaryField()[patchi]; +} + + +Foam::tmp Foam::solidDisplacementThermo::CpByCpv() const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::CpByCpv +( + const scalarField& T, + const label patchi +) const +{ + NotImplemented; + return tmp(nullptr); +} + + + +Foam::tmp Foam::solidDisplacementThermo::kappa() const +{ + return kappa_; +} + + +Foam::tmp Foam::solidDisplacementThermo::kappa +( + const label patchi +) const +{ + return kappa_.boundaryField()[patchi]; +} + + +Foam::tmp Foam::solidDisplacementThermo::alphahe() const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::alphahe +( + const label patchi +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::kappaEff +( + const volScalarField& alphat +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::kappaEff +( + const scalarField& alphat, + const label patchi +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::alphaEff +( + const volScalarField& alphat +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::alphaEff +( + const scalarField& alphat, + const label patchi +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::Kappa() const +{ + NotImplemented; + return tmp(nullptr); +} + + +Foam::tmp Foam::solidDisplacementThermo::Kappa +( + const label patchi +) const +{ + NotImplemented; + return tmp(nullptr); +} + + +void Foam::solidDisplacementThermo::correct() +{} + + +bool Foam::solidDisplacementThermo::read() +{ + return regIOobject::read(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/solidDisplacementThermo.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/solidDisplacementThermo.H new file mode 100644 index 0000000000..7deb5979da --- /dev/null +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementThermo/solidDisplacementThermo.H @@ -0,0 +1,358 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Copyright (C) 2019 OpenFOAM Foundation + \\/ 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 3 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, see . + +Class + Foam::solidDisplacementThermo + +Description + Fundamental solid thermodynamic properties + +SourceFiles + solidDisplacementThermo.C + +\*---------------------------------------------------------------------------*/ + +#ifndef solidDisplacementThermo_H +#define solidDisplacementThermo_H + +#include "solidThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class solidDisplacementThermo Declaration +\*---------------------------------------------------------------------------*/ + +class solidDisplacementThermo +: + public solidThermo +{ + // Private data + + //- Switch to enable plane stress + Switch planeStress_; + + //- Switch to enable thermal stress + Switch thermalStress_; + + //- Heat capacity at constant pressure [J/kg/K] + volScalarField Cp_; + + //- Thermal diffusivity for temperature [W/m/K] + volScalarField kappa_; + + //- Youngs modulus [Pa] + volScalarField E_; + + //- Poisson's ratio [] + volScalarField nu_; + + //- Volumetric thermal expansion coefficient [1/T] + volScalarField alphav_; + + + // Private member functions + + void readProperty(volScalarField& prop) const; + + +public: + + //- Runtime type information + TypeName("solidDisplacementThermo"); + + + // Constructors + + //- Construct from mesh and phase name + solidDisplacementThermo + ( + const fvMesh&, + const word& phaseName = word::null + ); + + + //- Destructor + virtual ~solidDisplacementThermo(); + + + // Member Functions + + //- Return the name of the thermo physics + virtual word thermoName() const + { + return type(); + } + + //- Return true if the equation of state is incompressible + // i.e. rho != f(p) + virtual bool incompressible() const + { + return true; + } + + //- Return true if the equation of state is isochoric + // i.e. rho = const + virtual bool isochoric() const + { + return true; + } + + //- Returns true to enable plane stress + bool planeStress() const + { + return planeStress_; + } + + //- Returns true to enable thermal stress + bool thermalStress() const + { + return thermalStress_; + } + + + // Access to thermophysical state variables + + //- Density [kg/m^3] + virtual tmp rho() const; + + //- Density for patch [kg/m^3] + virtual tmp rho(const label patchi) const; + + //- Youngs modulus [Pa] + virtual const volScalarField& E() const; + + //- Youngs modulus for a patch [Pa] + virtual const scalarField& E(const label patchi) const; + + //- Poisson's ratio [] + virtual const volScalarField& nu() const; + + //- Poisson's ratio for a patch[] + virtual const scalarField& nu(const label patchi) const; + + //- Volumetric thermal expansion coefficient [1/T] + virtual const volScalarField& alphav() const; + + //- Volumetric thermal expansion coefficient for a patch [1/T] + virtual const scalarField& alphav(const label patchi) const; + + //- Enthalpy/Internal energy [J/kg] + // Non-const access allowed for transport equations + virtual volScalarField& he(); + + //- Enthalpy/Internal energy [J/kg] + virtual const volScalarField& he() const; + + + // Fields derived from thermodynamic state variables + + //- Enthalpy/Internal energy + // for given pressure and temperature [J/kg] + virtual tmp he + ( + const volScalarField& p, + const volScalarField& T + ) const; + + //- Enthalpy/Internal energy for cell-set [J/kg] + virtual tmp he + ( + const scalarField& T, + const labelList& cells + ) const; + + //- Enthalpy/Internal energy for patch [J/kg] + virtual tmp he + ( + const scalarField& T, + const label patchi + ) const; + + //- Absolute enthalpy [J/kg/K] + virtual tmp ha() const; + + //- Absolute enthalpy + // for given pressure and temperature [J/kg] + virtual tmp ha + ( + const volScalarField& p, + const volScalarField& T + ) const; + + //- Absolute enthalpy for patch [J/kg/K] + virtual tmp ha + ( + const scalarField& T, + const label patchi + ) const; + + //- Absolute enthalpy for cell-set [J/kg] + virtual tmp ha + ( + const scalarField& T, + const labelList& cells + ) const; + + //- Chemical enthalpy [J/kg] + virtual tmp hc() const; + + //- Temperature from enthalpy/internal energy for cell-set + virtual tmp THE + ( + const scalarField& he, + const scalarField& T0, // starting temperature + const labelList& cells + ) const; + + //- Temperature from enthalpy/internal energy for patch + virtual tmp THE + ( + const scalarField& he, + const scalarField& T0, // starting temperature + const label patchi + ) const; + + //- Heat capacity at constant pressure [J/kg/K] + virtual tmp Cp() const; + + //- Heat capacity at constant pressure for patch [J/kg/K] + virtual tmp Cp + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant volume [J/kg/K] + virtual tmp Cv() const; + + //- Heat capacity at constant volume for patch [J/kg/K] + virtual tmp Cv + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity at constant pressure/volume [J/kg/K] + virtual tmp Cpv() const; + + //- Heat capacity at constant pressure/volume for patch [J/kg/K] + virtual tmp Cpv + ( + const scalarField& T, + const label patchi + ) const; + + //- Heat capacity ratio [] + virtual tmp CpByCpv() const; + + //- Heat capacity ratio for patch [] + virtual tmp CpByCpv + ( + const scalarField& T, + const label patchi + ) const; + + + // Fields derived from transport state variables + + //- Thermal diffusivity for temperature of mixture [W/m/K] + virtual tmp kappa() const; + + //- Thermal diffusivity for temperature of mixture for patch [W/m/K] + virtual tmp kappa(const label patchi) const; + + //- Thermal diffusivity for energy of mixture [kg/m/s] + virtual tmp alphahe() const; + + //- Thermal diffusivity for energy of mixture for patch [kg/m/s] + virtual tmp alphahe(const label patchi) const; + + //- Effective thermal turbulent diffusivity for temperature + // of mixture [W/m/K] + virtual tmp kappaEff + ( + const volScalarField& + ) const; + + //- Effective thermal turbulent diffusivity of mixture [kg/m/s] + virtual tmp alphaEff + ( + const volScalarField& alphat + ) const; + + //- Effective thermal turbulent diffusivity for temperature + // of mixture for patch [W/m/K] + virtual tmp kappaEff + ( + const scalarField& alphat, + const label patchi + ) const; + + //- Effective thermal turbulent diffusivity of mixture + // for patch [kg/m/s] + virtual tmp alphaEff + ( + const scalarField& alphat, + const label patchi + ) const; + + //- Return true if thermal conductivity is isotropic + virtual bool isotropic() const + { + return true; + } + + //- Anisotropic thermal conductivity [W/m/K] + virtual tmp Kappa() const; + + //- Anisotropic thermal conductivity [W/m/K] + virtual tmp Kappa + ( + const label patchi + ) const; + + + //- Update properties + virtual void correct(); + + + // I-O + + //- Read thermophysicalProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/Make/files b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/Make/files similarity index 100% rename from applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/Make/files rename to applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/Make/files diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/Make/options b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/Make/options new file mode 100644 index 0000000000..76059b4b75 --- /dev/null +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/Make/options @@ -0,0 +1,15 @@ +EXE_INC = \ + -I. \ + -I.. \ + -I../solidDisplacementThermo \ + -ItractionDisplacementCorrection \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +EXE_LIBS = \ + -lfiniteVolume \ + -lsolidThermo \ + -lsolidDisplacementThermo \ + -lmeshTools diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/calculateStress.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/calculateStress.H similarity index 100% rename from applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/calculateStress.H rename to applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/calculateStress.H diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/createControls.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/createControls.H similarity index 100% rename from applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/createControls.H rename to applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/createControls.H diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/createFields.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/createFields.H similarity index 95% rename from applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/createFields.H rename to applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/createFields.H index 2eebc995fe..01217b7bdf 100644 --- a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/createFields.H +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/createFields.H @@ -1,4 +1,4 @@ -#include "readMechanicalProperties.H" +#include "readThermophysicalProperties.H" Info<< "Reading displacement field D\n" << endl; volVectorField D diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/kineticEnergyLimiter.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/kineticEnergyLimiter.H similarity index 100% rename from applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/kineticEnergyLimiter.H rename to applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/kineticEnergyLimiter.H diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/readSteadyStressFoamControls.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/readSteadyStressFoamControls.H similarity index 100% rename from applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/readSteadyStressFoamControls.H rename to applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/readSteadyStressFoamControls.H diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/solidEquilibriumDisplacementFoam.C b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/solidEquilibriumDisplacementFoam.C similarity index 95% rename from applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/solidEquilibriumDisplacementFoam.C rename to applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/solidEquilibriumDisplacementFoam.C index 37f9273067..19587106d0 100644 --- a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/solidEquilibriumDisplacementFoam.C +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/solidEquilibriumDisplacementFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,7 +36,7 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" -#include "Switch.H" +#include "solidDisplacementThermo.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -50,6 +50,7 @@ int main(int argc, char *argv[]) #include "createMesh.H" #include "createControls.H" #include "createFields.H" + #include "createFieldRefs.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C similarity index 86% rename from applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C rename to applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C index 0c524bea64..db8132e683 100644 --- a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C +++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.C @@ -24,8 +24,8 @@ License \*---------------------------------------------------------------------------*/ #include "tractionDisplacementCorrectionFvPatchVectorField.H" +#include "solidDisplacementThermo.H" #include "addToRunTimeSelectionTable.H" -#include "volFields.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -145,32 +145,26 @@ void tractionDisplacementCorrectionFvPatchVectorField::updateCoeffs() return; } - const dictionary& mechanicalProperties = db().lookupObject + const label patchi = patch().index(); + + const solidDisplacementThermo& thermo = + db().lookupObject + ( + solidDisplacementThermo::dictName + ); + + const scalarField& E = thermo.E(patchi); + const scalarField& nu = thermo.nu(patchi); + + const scalarField mu(E/(2.0*(1.0 + nu))); + const scalarField lambda ( - "mechanicalProperties" + thermo.planeStress() + ? nu*E/((1 + nu)*(1 - nu)) + : nu*E/((1 + nu)*(1 - 2*nu)) ); - const fvPatchField& rho = - patch().lookupPatchField("rho"); - - const fvPatchField& rhoE = - patch().lookupPatchField("E"); - - const fvPatchField& nu = - patch().lookupPatchField("nu"); - - scalarField E(rhoE/rho); - scalarField mu(E/(2.0*(1.0 + nu))); - scalarField lambda(nu*E/((1.0 + nu)*(1.0 - 2.0*nu))); - - Switch planeStress(mechanicalProperties.lookup("planeStress")); - - if (planeStress) - { - lambda = nu*E/((1.0 + nu)*(1.0 - nu)); - } - - vectorField n(patch().nf()); + const vectorField n(patch().nf()); const fvPatchField& sigmaD = patch().lookupPatchField("sigmaD"); @@ -180,7 +174,7 @@ void tractionDisplacementCorrectionFvPatchVectorField::updateCoeffs() gradient() = ( - (traction_ + pressure_*n)/rho - (n & (sigmaD + sigmaExp)) + (traction_ + pressure_*n) - (n & (sigmaD + sigmaExp)) )/(2.0*mu + lambda); fixedGradientFvPatchVectorField::updateCoeffs(); diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.H b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.H similarity index 100% rename from applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.H rename to applications/solvers/stressAnalysis/solidDisplacementFoam/solidEquilibriumDisplacementFoam/tractionDisplacementCorrection/tractionDisplacementCorrectionFvPatchVectorField.H diff --git a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/Make/options b/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/Make/options deleted file mode 100644 index 24377db11c..0000000000 --- a/applications/solvers/stressAnalysis/solidEquilibriumDisplacementFoam/Make/options +++ /dev/null @@ -1,10 +0,0 @@ -EXE_INC = \ - -I. \ - -I../solidDisplacementFoam \ - -ItractionDisplacementCorrection \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude - -EXE_LIBS = \ - -lfiniteVolume \ - -lmeshTools diff --git a/src/radiationModels/absorptionEmissionModels/greyMeanSolid/greyMeanSolid.C b/src/radiationModels/absorptionEmissionModels/greyMeanSolid/greyMeanSolid.C index 71e98303c0..f9adb08829 100644 --- a/src/radiationModels/absorptionEmissionModels/greyMeanSolid/greyMeanSolid.C +++ b/src/radiationModels/absorptionEmissionModels/greyMeanSolid/greyMeanSolid.C @@ -96,7 +96,7 @@ Foam::radiationModels::absorptionEmissionModels::greyMeanSolid::greyMeanSolid : absorptionEmissionModel(dict, mesh), coeffsDict_((dict.optionalSubDict(typeName + "Coeffs"))), - thermo_(mesh.lookupObject(basicThermo::dictName)), + thermo_(mesh.lookupObject(basicThermo::dictName)), speciesNames_(0), mixture_(dynamic_cast(thermo_)), solidData_(mixture_.Y().size()) diff --git a/src/radiationModels/absorptionEmissionModels/greyMeanSolid/greyMeanSolid.H b/src/radiationModels/absorptionEmissionModels/greyMeanSolid/greyMeanSolid.H index 4cd32c2ca5..159a5ac42b 100644 --- a/src/radiationModels/absorptionEmissionModels/greyMeanSolid/greyMeanSolid.H +++ b/src/radiationModels/absorptionEmissionModels/greyMeanSolid/greyMeanSolid.H @@ -49,7 +49,7 @@ SourceFiles #define greyMeanSolid_H #include "absorptionEmissionModel.H" -#include "solidThermo.H" +#include "solidPressureThermo.H" #include "basicSpecieMixture.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -85,7 +85,7 @@ private: dictionary coeffsDict_; //- SLG thermo package - const solidThermo& thermo_; + const solidPressureThermo& thermo_; //- Hash table of species names HashTable