CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM CC Toolkits for Fluid-Structure Interaction (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/)
-   -   [solidMechanics] a defect of solidMechanics in foam-extend-3.0 (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/136731-defect-solidmechanics-foam-extend-3-0-a.html)

bieshuxuhe June 3, 2014 07:57

a defect of solidMechanics in foam-extend-3.0
 
hi,
I found a defect of solidMechanics in foam-extend-3.0 ! :confused:
for example , I created a myelasticNonLinULSolidFoam just changing the elasticNonLinULSolidFoam
from
Code:

    Info<< "Reading accumulated displacement field U\n" << endl;
    volVectorField U
    (
        IOobject
        (
            "U",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        mesh,
        dimensionedVector("zero", dimLength, vector::zero)
    );

to
Code:

    Info<< "Reading accumulated displacement field U\n" << endl;
    volVectorField Usolid
    (
        IOobject
        (
            "Usolid",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        mesh,
        dimensionedVector("zero", dimLength, vector::zero)
    );

of course I did all the necessary changes which means replacing the U by Usolid at other place .
then, wmake to get the myelasticNonLinULSolidFoam ! and I created a case that replace U by Usolid too !
when we use this new solver to run a case which needs to use the accumulated displacement field(for example use the timeVaringFixedDisplacement boundary) , it will be error
Code:

Starting time loop

Time = 0.01



--> FOAM FATAL ERROR:

    request for volVectorField U from objectRegistry region0 failed
    available objects of type volVectorField are

5
(
Usolid
DUPrevIter
DU
divDSigmaLargeStrainExp
divDSigmaExp
)


    From function objectRegistry::lookupObject<Type>(const word&) const
    in file /home/sxh/foam/foam-extend-3.0/src/foam/lnInclude/objectRegistryTemplates.C at line 139.

FOAM aborting

we know that the "Usolid" should be the "volVectorField U from objectRegistry region0" , and the "Usolid" is a available object !:eek:
actually , I first found this problem in the icoFsiElasticNonLinULSolidFoam which use Usolid instead of U in solid part , for there is a U in fluid part !

I don't know what is wrong . maybe it is a bug ?
what do you think ?

thanks

bigphil June 3, 2014 09:29

Hi,

Many of the solid mechanics boundary conditions (in $FOAM_SRC/solidModels/fvPatchFields) expect the displacement field to be called "U", and have this hard-coded into the boundary condition.

So you would need to modify the specific boundary condition if you want to change the name of the displacement field, or add an optional variable to the boundary condition definition giving the name of the displacement field.

Best regards,
Philip


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