CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   Error calling calculated vector field as boundary condition in dynamic mesh (https://www.cfd-online.com/Forums/openfoam-programming-development/206194-error-calling-calculated-vector-field-boundary-condition-dynamic-mesh.html)

paoching August 31, 2018 18:01

Error calling calculated vector field as boundary condition in dynamic mesh
 
Hello everyone! I'm writing a custom solver for galvanic corrosion of metal based on the combination of electrostaticFoam and pimpleFoam. I'm calling it pimpleGalvanicFoam. Here is the solver, which I have no problem compiling.
https://1drv.ms/f/s!Auz_PRELFPQMg8N_VNv92oxsg4aePQ

My problem come when I try to modify /0/pointMotionU using #codestream.
I have calculated the volScalarField magCr for magnitude of corrosion rate in every time step, and I am trying to replace the standard uniform fixed value:
Code:

    anode
    {
        type            uniformFixedValue;
        uniformValue    uniform (0 0 -.5);
    }

with the calculated magCr by calling it from the object registry:
Code:

    anode
    {
        type            fixedValue;
        value          #codeStream
        {
          codeInclude
          #{
            #include "fvCFD.H"
          #};
          codeOptions
          #{
            -I$(LIB_SRC)/finiteVolume/lnInclude \
            -I$(LIB_SRC)/meshTools/lnInclude
          #};
          codeLibs
          #{
            -lmeshTools \
            -lfiniteVolume
          #};
          code
          #{
            const IOdictionary& d = static_cast<const IOdictionary&>
            (
              dict.parent().parent()
            );
            const fvMesh& mesh = refCast<const fvMesh>(d.db());
            const label id = mesh.boundary().findPatchID("anode");
            const fvPatch& patch = mesh.boundary()[id];
            const volScalarField& magCr = d.db().objectRegistry::lookupObject<volScalarField> ("magCr");
            const vectorField& Cf = patch.Cf();
            vectorField field(patch.size(), vector(0, 0, 0) );
            forAll(Cf, faceI)
            {
                field[faceI] = vector(0, 0, magCr[faceI]);
            }
          #};
        };

but I get the following error and I have no idea why and how to fix it. (I DO have magCr in my 0 directory)
Code:

/*---------------------------------------------------------------------------*\
  =========                |
  \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox
  \\    /  O peration    | Website:  https://openfoam.org
    \\  /    A nd          | Version:  6
    \\/    M anipulation  |
\*---------------------------------------------------------------------------*/
Build  : 6-1a0c91b3baa8
Exec  : pimpleGalvanicFoam
Date  : Aug 31 2018
Time  : 14:54:27
Host  : "LAPTOP-QCU1KE67"
PID    : 26135
I/O    : uncollated
Case  : /mnt/c/Users/paoch/OneDrive/School/research/OpenFOAM/pimpleGalvanicTest
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create mesh for time = 0

Selecting dynamicFvMesh dynamicMotionSolverFvMesh
Selecting motion solver: velocityLaplacian
Using #codeStream at line 31 in file "/mnt/c/Users/paoch/OneDrive/School/research/OpenFOAM/pimpleGalvanicTest/0/pointMotionU.boundaryField.anode"
Using #codeStream with "/mnt/c/Users/paoch/OneDrive/School/research/OpenFOAM/pimpleGalvanicTest/dynamicCode/platforms/linux64GccDPInt32Opt/lib/libcodeStream_719c3cfd2ab59662a033822add60bfc90bd24489.so"


--> FOAM FATAL ERROR:

    request for volScalarField magCr from objectRegistry region0 failed
    available objects of type volScalarField are
0()

    From function const Type& Foam::objectRegistry::lookupObject(const Foam::word&) const [with Type = Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>]
    in file /home/ubuntu/OpenFOAM/OpenFOAM-6/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 193.

FOAM aborting

#0  Foam::error::printStack(Foam::Ostream&) at ??:?
#1  Foam::error::abort() at ??:?
#2  Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const& Foam::objectRegistry::lookupObject<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> >(Foam::word const&) const at ??:?
#3  codeStream_719c3cfd2ab59662a033822add60bfc90bd24489 at /usr/include/c++/7/bits/basic_string.h:211
#4  Foam::functionEntries::codeStream::execute(Foam::dictionary const&, Foam::primitiveEntry&, Foam::Istream&) at ??:?
#5  Foam::functionEntry::execute(Foam::word const&, Foam::dictionary const&, Foam::primitiveEntry&, Foam::Istream&) at ??:?
#6  Foam::primitiveEntry::expandFunction(Foam::word const&, Foam::dictionary const&, Foam::Istream&) at ??:?
#7  Foam::primitiveEntry::append(Foam::token const&, Foam::dictionary const&, Foam::Istream&) at ??:?
#8  Foam::primitiveEntry::read(Foam::dictionary const&, Foam::Istream&) at ??:?
#9  Foam::primitiveEntry::readEntry(Foam::dictionary const&, Foam::Istream&) at ??:?
#10  Foam::primitiveEntry::primitiveEntry(Foam::keyType const&, Foam::dictionary const&, Foam::Istream&) at ??:?
#11  Foam::entry::New(Foam::dictionary&, Foam::Istream&) at ??:?
#12  Foam::dictionary::read(Foam::Istream&, bool) at ??:?
#13  Foam::dictionary::dictionary(Foam::fileName const&, Foam::dictionary const&, Foam::Istream&) at ??:?
#14  Foam::dictionaryEntry::dictionaryEntry(Foam::keyType const&, Foam::dictionary const&, Foam::Istream&) at ??:?
#15  Foam::entry::New(Foam::dictionary&, Foam::Istream&) at ??:?
#16  Foam::dictionary::read(Foam::Istream&, bool) at ??:?
#17  Foam::dictionary::dictionary(Foam::fileName const&, Foam::dictionary const&, Foam::Istream&) at ??:?
#18  Foam::dictionaryEntry::dictionaryEntry(Foam::keyType const&, Foam::dictionary const&, Foam::Istream&) at ??:?
#19  Foam::entry::New(Foam::dictionary&, Foam::Istream&) at ??:?
#20  Foam::dictionary::read(Foam::Istream&, bool) at ??:?
#21  Foam::operator>>(Foam::Istream&, Foam::dictionary&) at ??:?
#22  Foam::baseIOdictionary::readData(Foam::Istream&) at ??:?
#23  Foam::fileOperations::uncollatedFileOperation::read(Foam::regIOobject&, bool, Foam::IOstream::streamFormat, Foam::word const&) const at ??:?
#24  Foam::regIOobject::readHeaderOk(Foam::IOstream::streamFormat, Foam::word const&) at ??:?
#25  Foam::localIOdictionary::localIOdictionary(Foam::IOobject const&, Foam::word const&) at ??:?
#26  Foam::GeometricField<Foam::Vector<double>, Foam::pointPatchField, Foam::pointMesh>::readFields() at ??:?
#27  Foam::GeometricField<Foam::Vector<double>, Foam::pointPatchField, Foam::pointMesh>::GeometricField(Foam::IOobject const&, Foam::pointMesh const&) at ??:?
#28  Foam::velocityMotionSolver::velocityMotionSolver(Foam::polyMesh const&, Foam::IOdictionary const&, Foam::word const&) at ??:?
#29  Foam::velocityLaplacianFvMotionSolver::velocityLaplacianFvMotionSolver(Foam::polyMesh const&, Foam::IOdictionary const&) at ??:?
#30  Foam::motionSolver::adddictionaryConstructorToTable<Foam::velocityLaplacianFvMotionSolver>::New(Foam::polyMesh const&, Foam::IOdictionary const&) at ??:?
#31  Foam::motionSolver::New(Foam::polyMesh const&, Foam::IOdictionary const&) at ??:?
#32  Foam::motionSolver::New(Foam::polyMesh const&) at ??:?
#33  Foam::dynamicMotionSolverFvMesh::dynamicMotionSolverFvMesh(Foam::IOobject const&) at ??:?
#34  Foam::dynamicFvMesh::addIOobjectConstructorToTable<Foam::dynamicMotionSolverFvMesh>::New(Foam::IOobject const&) at ??:?
#35  Foam::dynamicFvMesh::New(Foam::IOobject const&) at ??:?
#36  ? in "/home/paul/OpenFOAM/paul-6/platforms/linux64GccDPInt32Opt/bin/pimpleGalvanicFoam"
#37  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#38  ? in "/home/paul/OpenFOAM/paul-6/platforms/linux64GccDPInt32Opt/bin/pimpleGalvanicFoam"
Aborted (core dumped)

Any Insight/idea/critique/solution is appreciated.
and here is my case file:
https://1drv.ms/f/s!Auz_PRELFPQMg8UEhBbeGzIh57-NOg


All times are GMT -4. The time now is 00:00.