mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: electricPotential: enable electric field calculations
This commit is contained in:
committed by
Kutalmış Berçin
parent
efe8220a26
commit
c7e5e7f4a2
@ -209,8 +209,17 @@ Foam::functionObjects::electricPotential::electricPotential
|
|||||||
IOobject::scopedName(typeName, "V")
|
IOobject::scopedName(typeName, "V")
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
Ename_
|
||||||
|
(
|
||||||
|
dict.getOrDefault<word>
|
||||||
|
(
|
||||||
|
"E",
|
||||||
|
IOobject::scopedName(typeName, "E")
|
||||||
|
)
|
||||||
|
),
|
||||||
nCorr_(1),
|
nCorr_(1),
|
||||||
writeDerivedFields_(false)
|
writeDerivedFields_(false),
|
||||||
|
electricField_(false)
|
||||||
{
|
{
|
||||||
read(dict);
|
read(dict);
|
||||||
|
|
||||||
@ -218,6 +227,28 @@ Foam::functionObjects::electricPotential::electricPotential
|
|||||||
// look it up
|
// look it up
|
||||||
volScalarField& eV = getOrReadField(Vname_);
|
volScalarField& eV = getOrReadField(Vname_);
|
||||||
eV.correctBoundaryConditions();
|
eV.correctBoundaryConditions();
|
||||||
|
|
||||||
|
if (electricField_)
|
||||||
|
{
|
||||||
|
auto* ptr = getObjectPtr<volVectorField>(Ename_);
|
||||||
|
|
||||||
|
if (!ptr)
|
||||||
|
{
|
||||||
|
ptr = new volVectorField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
Ename_,
|
||||||
|
mesh_.time().timeName(),
|
||||||
|
mesh_,
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
-fvc::grad(eV)
|
||||||
|
);
|
||||||
|
mesh_.objectRegistry::store(ptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -236,6 +267,7 @@ bool Foam::functionObjects::electricPotential::read(const dictionary& dict)
|
|||||||
dict.readIfPresent("epsilonr", epsilonr_);
|
dict.readIfPresent("epsilonr", epsilonr_);
|
||||||
dict.readIfPresent("nCorr", nCorr_);
|
dict.readIfPresent("nCorr", nCorr_);
|
||||||
dict.readIfPresent("writeDerivedFields", writeDerivedFields_);
|
dict.readIfPresent("writeDerivedFields", writeDerivedFields_);
|
||||||
|
dict.readIfPresent("electricField", electricField_);
|
||||||
|
|
||||||
// If flow is multiphase
|
// If flow is multiphase
|
||||||
if (!phasesDict_.empty())
|
if (!phasesDict_.empty())
|
||||||
@ -334,6 +366,12 @@ bool Foam::functionObjects::electricPotential::execute()
|
|||||||
eVEqn.solve();
|
eVEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (electricField_)
|
||||||
|
{
|
||||||
|
auto& E = lookupObjectRef<volVectorField>(Ename_);
|
||||||
|
E == -fvc::grad(eV);
|
||||||
|
}
|
||||||
|
|
||||||
Log << endl;
|
Log << endl;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -348,29 +386,17 @@ bool Foam::functionObjects::electricPotential::write()
|
|||||||
|
|
||||||
volScalarField& eV = getOrReadField(Vname_);
|
volScalarField& eV = getOrReadField(Vname_);
|
||||||
|
|
||||||
if (writeDerivedFields_)
|
if (electricField_)
|
||||||
{
|
{
|
||||||
// Write the electric field
|
const auto& E = lookupObject<volVectorField>(Ename_);
|
||||||
const volVectorField E
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
IOobject::scopedName(typeName, "E"),
|
|
||||||
mesh_.time().timeName(),
|
|
||||||
mesh_.time(),
|
|
||||||
IOobject::NO_READ,
|
|
||||||
IOobject::NO_WRITE,
|
|
||||||
IOobject::NO_REGISTER
|
|
||||||
),
|
|
||||||
-fvc::grad(eV),
|
|
||||||
fvPatchFieldBase::calculatedType()
|
|
||||||
);
|
|
||||||
|
|
||||||
Log << tab << E.name() << endl;
|
Log << tab << E.name() << endl;
|
||||||
|
|
||||||
E.write();
|
E.write();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (writeDerivedFields_)
|
||||||
|
{
|
||||||
// Write the current density field
|
// Write the current density field
|
||||||
tmp<volScalarField> tsigma = this->sigma();
|
tmp<volScalarField> tsigma = this->sigma();
|
||||||
|
|
||||||
@ -408,7 +434,7 @@ bool Foam::functionObjects::electricPotential::write()
|
|||||||
IOobject::NO_WRITE,
|
IOobject::NO_WRITE,
|
||||||
IOobject::NO_REGISTER
|
IOobject::NO_REGISTER
|
||||||
),
|
),
|
||||||
fvc::div(tepsilonm*E),
|
fvc::div(tepsilonm*(-fvc::grad(eV))),
|
||||||
fvPatchFieldBase::calculatedType()
|
fvPatchFieldBase::calculatedType()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -121,6 +121,8 @@ Usage
|
|||||||
nCorr <int>;
|
nCorr <int>;
|
||||||
writeDerivedFields <bool>;
|
writeDerivedFields <bool>;
|
||||||
V <word>;
|
V <word>;
|
||||||
|
electricField <bool>;
|
||||||
|
E <word>;
|
||||||
|
|
||||||
// Inherited entries
|
// Inherited entries
|
||||||
...
|
...
|
||||||
@ -137,6 +139,8 @@ Usage
|
|||||||
nCorr | Number of corrector iterations | int | no | 1
|
nCorr | Number of corrector iterations | int | no | 1
|
||||||
writeDerivedFields | Flag to write extra fields | bool | no | false
|
writeDerivedFields | Flag to write extra fields | bool | no | false
|
||||||
V | Name of electric potential field | word | no | electricPotential:V
|
V | Name of electric potential field | word | no | electricPotential:V
|
||||||
|
electricField | Flag to calculate electric field | bool | no | false
|
||||||
|
E | Name of electric field | word | no | electricPotential:E
|
||||||
\endtable
|
\endtable
|
||||||
|
|
||||||
The inherited entries are elaborated in:
|
The inherited entries are elaborated in:
|
||||||
@ -145,7 +149,6 @@ Usage
|
|||||||
Fields written out when the \c writeDerivedFields entry is \c true:
|
Fields written out when the \c writeDerivedFields entry is \c true:
|
||||||
\table
|
\table
|
||||||
Operand | Type | Location
|
Operand | Type | Location
|
||||||
Electric field | volVectorField | \<time\>/electricPotential:E
|
|
||||||
Current density | volVectorField | \<time\>/electricPotential:J
|
Current density | volVectorField | \<time\>/electricPotential:J
|
||||||
Charge density | volScalarField | \<time\>/electricPotential:rho
|
Charge density | volScalarField | \<time\>/electricPotential:rho
|
||||||
\endtable
|
\endtable
|
||||||
@ -202,6 +205,9 @@ class electricPotential
|
|||||||
//- Name of electric potential field
|
//- Name of electric potential field
|
||||||
word Vname_;
|
word Vname_;
|
||||||
|
|
||||||
|
//- Name of electric field
|
||||||
|
word Ename_;
|
||||||
|
|
||||||
//- Number of corrector iterations
|
//- Number of corrector iterations
|
||||||
int nCorr_;
|
int nCorr_;
|
||||||
|
|
||||||
@ -209,6 +215,9 @@ class electricPotential
|
|||||||
//- electric field, current density and free-charge density
|
//- electric field, current density and free-charge density
|
||||||
bool writeDerivedFields_;
|
bool writeDerivedFields_;
|
||||||
|
|
||||||
|
//- Flag to calculate electric field
|
||||||
|
bool electricField_;
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user