CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   passing none-Field Data among libraries (https://www.cfd-online.com/Forums/openfoam-solving/65226-passing-none-field-data-among-libraries.html)

lukasfischer June 9, 2009 07:04

passing none-Field Data among libraries
 
Hi,
we would like to access one Foam::scalar that we calculate in a modified forces library to set a boundary. The library we created calculates the surface elevation depending on gamma and a predefinded direction and is called from the controlDict similar to the forces library and can be called several times with different names.
Now we would like to use these values in a wave generating boundary, preferably by specifying the same identifier in the boundary condition as in the controlDict. If the forces lib would be a registry object this would be easy, but it seems to me that only fields and some special types (i.e. Time) can be attached to the registry.
Is there any type that can hold a single value/scalar and that can be attached to the registry or can the forces object be linked to the reg., or is there a different way to pass small data among libraries?
Thanks, Lukas

lukasfischer June 15, 2009 10:41

bump? .

psosnows June 15, 2009 13:20

hello Lukas,

my idea would be to create fileds with zeroGradient boundaries and constant, fixedValues in internalFields. Then use them to transfer data via transferScalar.value();

Code:

violScalarField transferScalar
(
        IOobject (
            name_from_controlDict,
            runTime.timeName(),
            mesh,
            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        mesh,
        dimensionSet( <my dim set> ),
        "zeroGradient"
);
transverScalar = MyValueToTransfer;

hope it helps,
Pawel

lukasfischer June 15, 2009 16:31

Thanks for the help, but wouldn't that mean to pass a whole list of scalars of the size of the mesh cells? I just want to register one single scalar.
Thanks, Lukas

psosnows June 15, 2009 19:40

As far as I know if you have uniform value inside the filed it stores just the value (so it is quite small). Simple way to try it is to force it to write itself ( transferScalar.write(); ).
You will see that it writes the file with uniform value.

My other idea of transfering the scalars would be:
- calculate the value and store it in some "global" variable in main code
- pass it as an argument via procedure which calls your second routine

But if you want to use registery I belive the first way is quite simple and convinient ;)
(although maybe there is a better way)

Regards,
Pawel

wxtwalkee August 14, 2014 07:51

Quote:

Originally Posted by lukasfischer (Post 218669)
Hi,
we would like to access one Foam::scalar that we calculate in a modified forces library to set a boundary. The library we created calculates the surface elevation depending on gamma and a predefinded direction and is called from the controlDict similar to the forces library and can be called several times with different names.
Now we would like to use these values in a wave generating boundary, preferably by specifying the same identifier in the boundary condition as in the controlDict. If the forces lib would be a registry object this would be easy, but it seems to me that only fields and some special types (i.e. Time) can be attached to the registry.
Is there any type that can hold a single value/scalar and that can be attached to the registry or can the forces object be linked to the reg., or is there a different way to pass small data among libraries?
Thanks, Lukas

Hi Lukas,
I am investigating on the active-absorbing piston-type wave-making in OpenFoam. I am confused by the same problem you have met. I need to adjust the piston's movement according to the surface elevation( just a scalar) on the piston. Besides, I need the piston's position( just a vector) at previous timestep. The problem has been confusing me for weeks. Would you please help me out? I cannot be too grateful!

wxtwalkee


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