CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Pre-Processing (https://www.cfd-online.com/Forums/openfoam-pre-processing/)
-   -   how to use funkySetFields function in muliregion case (https://www.cfd-online.com/Forums/openfoam-pre-processing/116840-how-use-funkysetfields-function-muliregion-case.html)

bryant_k April 26, 2013 05:12

how to use funkySetFields function in muliregion case
 
Hello everyone
I want to use funkySetFields function to set the initial nonuniform field in multiregion case.The solver that I am useing is chtMultiregionFoam and the case is modified according to the tutorials name multiRegionHeater.I know how to use funkySetFields in a case which have a singal region.
With the command:
Code:

funkySetFields -time 0
I can have a initial fields I need successfully.
But in a multiregion case I can not make it work.I know that the foamToTecplot have the function for multiregion.So I try the command according to that:
Code:

funkySetFields -region heater -time 0
or
Code:

funkySetFields  -time 0 -region heater
but it is wrong.

Can you tell me how can I use this funciton in multiregion case?

Thank you very much!

regards!

bryant_K

gschaider April 26, 2013 05:28

Quote:

Originally Posted by bryant_k (Post 423286)
Hello everyone
I want to use funkySetFields function to set the initial nonuniform field in multiregion case.The solver that I am useing is chtMultiregionFoam and the case is modified according to the tutorials name multiRegionHeater.I know how to use funkySetFields in a case which have a singal region.
With the command:
Code:

funkySetFields -time 0
I can have a initial fields I need successfully.
But in a multiregion case I can not make it work.I know that the foamToTecplot have the function for multiregion.So I try the command according to that:
Code:

funkySetFields -region heater -time 0
or
Code:

funkySetFields  -time 0 -region heater
but it is wrong.

Can you tell me how can I use this funciton in multiregion case?

Thank you very much!

regards!

bryant_K

Define "wrong".

I've used it in the past with -region and it worked. But I think that was in "command line"-mode. You're using a dictionary, right? Try specifying an entry "region heater;" there. I must check the source but it is possible that in dictionary mode the -region-option is ignored

bryant_k April 27, 2013 05:41

Thank you for your reply.
I have put the file name funkySetFieldsDict into folder both "system" and "system/heater". Then I run the command
Code:

funkySetFields -region heater -time 0
it occured error:
Code:

can not open
file:../../multiRegionHeater/system/heater/funkySetFieldsDict.heater at line 0.....

But when I run the command
Code:

funkySetFields -time 0
,it can run fluently without error.
But it just changed the file in folder "0" rather "0/heater".

Then I add entry in the file funkySetFieldsDict:
Code:

expressions
(
    Q1
    {
        field Q;
        expression "...";
        condition "..."
      region heater'
      }
)

It can run without any error,but it also changed the field in folder "0" only.

Can you tell how to add the entry and how can I get fields I want?
Thank you very much!

bryant_k

gschaider April 28, 2013 16:54

Quote:

Originally Posted by bryant_k (Post 423487)
Thank you for your reply.
I have put the file name funkySetFieldsDict into folder both "system" and "system/heater". Then I run the command
Code:

funkySetFields -region heater -time 0
it occured error:
Code:

can not open
file:../../multiRegionHeater/system/heater/funkySetFieldsDict.heater at line 0.....


I checked. It works like this. Look at the error message: the location of the dictionary is in a subdirectory of system, not system itself
Quote:

Originally Posted by bryant_k (Post 423487)
But when I run the command
Code:

funkySetFields -time 0
,it can run fluently without error.
But it just changed the file in folder "0" rather "0/heater".

Then I add entry in the file funkySetFieldsDict:
Code:

expressions
(
    Q1
    {
        field Q;
        expression "...";
        condition "..."
      region heater'
      }
)

It can run without any error,but it also changed the field in folder "0" only.

Can you tell how to add the entry and how can I get fields I want?
Thank you very much!


STutexas April 10, 2016 23:01

Hi

Thank you for your post and your documentation. I am trying to use funkySetFields for setting heterogeneous values of fields in different cell zones. I have already created 2 separate cell zones and I use the following commands in my funkySetFieldsDict file:

setDT
{
field DT;
keepPatches true;
expression "2e-09";
zone PoreWater;
}

setTb
{
field Tb;
keepPatches true;
expression "2";
zone PoreWater;
}

My problem is that funkeSetFields changes the values of DT, Tb fields in the whole domain and not just in the zone PoreWater. Please let me know what am I doing wrongly.

Thank you.

Saurabh

wyldckat April 16, 2016 12:05

Quote:

Originally Posted by STutexas (Post 594411)
My problem is that funkeSetFields changes the values of DT, Tb fields in the whole domain and not just in the zone PoreWater. Please let me know what am I doing wrongly.

Quick answer: Insufficient details. Please provide more details, namely:
  1. What's the exact command you are using?
  2. Where are the "funkySetFieldsDict" files placed in your case? Namely inside which folder (directory)?

STutexas April 16, 2016 20:46

Hi

Thank you for your reply. I am using the command funkySetFields -time 0. My funkySetFields file is in system directory. I believe that I am using the command right but the value in the entire domain is changed not just in the defined cell.

Thank you.

Saurabh

wyldckat April 17, 2016 14:22

Quick answer: Then if you want the correct region to be affected, then you need to:
  1. Place a "funkySetFieldsDict" inside the folder "system/PoreWater".
  2. Run like this:
    Code:

    funkySetFields -time 0 -region PoreWater
This was explained in the posts above ;)

STutexas April 17, 2016 14:47

Hi Bruno

Thank you for your suggestion . But I am not running split mesh during preprocessing. I have regions divided (using toposet) into separate cells with names like pore water, bound water, hydrocarbon etc. I use createBaffles to divide the mesh into separate regions. I set Boundary conditions on the 2 generated boundaries. Now I want to set different (hetrogeneous) properties in these different cells. There is only one system folder :(.

Please let me know if running splitmesh is necessary for me to properly define these different phases. I am not doing that for now :confused:.

Thanks again for your feedback. It has been very helpful.

P.S. I have attached is a simplified .msh that I use. Please unzip and open it with gmsh if you would like a better visualization of my problem. Thanks again.


Saurabh

wyldckat April 17, 2016 15:04

Quick answer: Sorry, I read the other post too fast :(

You should use something like this:
Code:

  setTb
  {
    field p_rgh;
    keepPatches true;
    expression "3";
    condition  "zone(porosity)";
  }

Source: http://openfoamwiki.net/index.php/Co...funkySetFields - chapter "Expression syntax" and section "Initialise a pressure field gradient due to gravity".


edit: And you forgot to attach. Either way, I tested with the tutorial case "multiphase/interFoam/ras/angledDuct" ;)

STutexas May 1, 2016 21:38

Hi Bruno

Thank you for all the help and your advice. I have used set fields for simulation of my case. Thanks again for the help.

I have another question pertaining to the same problem. I am using groovyBC in my simulations. This is what my code looks like.

boundaryField
{
PoreWall
{
type groovyBCDirection;
value uniform (0 0 0);
valueExpression "vector (0, 0, Minf)";
gradientExpression "vector(0,0,0)";
fractionExpression "symmTensor(1/(1+D/(rho2*mag(delta()))),0,0,1/(1+D/(rho2*mag(delta()))),0,1/(1+D/(rho1*mag(delta()))))";
evaluateDuringConstruction 0;
variables
4
(
"D=3e-09;"
"rho2=10e-06;"
"rho1=10e-06;"
"Minf=4.2e-07;"
)
;

}

}

but I would like to change the values of rho2, rho1 and Minf based on the set type in the mesh. For example:

if (set_of_face) == set1
Minf = 4.2;
else
Minf = 2.2;

Is it possible to set type non uniform values in the groovyBCset. I really appreciate all the help that you have given and all the help.

Saurabh

gschaider May 2, 2016 14:42

Quote:

Originally Posted by STutexas (Post 597604)
Hi Bruno

Thank you for all the help and your advice. I have used set fields for simulation of my case. Thanks again for the help.

I have another question pertaining to the same problem. I am using groovyBC in my simulations. This is what my code looks like.

boundaryField
{
PoreWall
{
type groovyBCDirection;
value uniform (0 0 0);
valueExpression "vector (0, 0, Minf)";
gradientExpression "vector(0,0,0)";
fractionExpression "symmTensor(1/(1+D/(rho2*mag(delta()))),0,0,1/(1+D/(rho2*mag(delta()))),0,1/(1+D/(rho1*mag(delta()))))";
evaluateDuringConstruction 0;
variables
4
(
"D=3e-09;"
"rho2=10e-06;"
"rho1=10e-06;"
"Minf=4.2e-07;"
)
;

}

}

but I would like to change the values of rho2, rho1 and Minf based on the set type in the mesh. For example:

if (set_of_face) == set1
Minf = 4.2;
else
Minf = 2.2;

Is it possible to set type non uniform values in the groovyBCset. I really appreciate all the help that you have given and all the help.

Saurabh

You can always use the condition-operator in expressions "cond ? 4.2 : 2.2" for such a thing with cond being your conditon. I just don't understand what you mean with "set type in the mesh"

Mohammad Jam August 1, 2016 04:40

Quote:

Originally Posted by bryant_k (Post 423487)
Thank you for your reply.
I have put the file name funkySetFieldsDict into folder both "system" and "system/heater". Then I run the command
Code:

funkySetFields -region heater -time 0
it occured error:
Code:

can not open
file:../../multiRegionHeater/system/heater/funkySetFieldsDict.heater at line 0.....

But when I run the command
Code:

funkySetFields -time 0
,it can run fluently without error.
But it just changed the file in folder "0" rather "0/heater".

Then I add entry in the file funkySetFieldsDict:
Code:

expressions
(
    Q1
    {
        field Q;
        expression "...";
        condition "..."
      region heater'
      }
)

It can run without any error,but it also changed the field in folder "0" only.

Can you tell how to add the entry and how can I get fields I want?
Thank you very much!

bryant_k

Hi Dears

u should probably change funkySetFieldsDict name with funkySetFieldsDict.heater after u put funkySetFieldsDict in heater folder in system folder
(ADD dot heater)= .heater

then run funkySetFields -time 0 -region heater


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