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/)
-   -   Combine CHTmultiRegion and InterFoam (https://www.cfd-online.com/Forums/openfoam-programming-development/127983-combine-chtmultiregion-interfoam.html)

Kummi April 12, 2022 10:19

Hello Bana,
I haven't worked with interFoam solver. In case of multi-region modelling, your case should be straight forward. For 3 solids, you can implement the same default solid model solving heat conduction equation. In fluid region, create your fields, meshes and respective equations. It might be hard in the beginning, but your efforts will pay off.
Good luck

Bana April 12, 2022 12:55

Quote:

Originally Posted by Kummi (Post 826116)
Hello Bana,
I haven't worked with interFoam solver. In case of multi-region modelling, your case should be straight forward. For 3 solids, you can implement the same default solid model solving heat conduction equation. In fluid region, create your fields, meshes and respective equations. It might be hard in the beginning, but your efforts will pay off.
Good luck

Thank you Kummi for your comment,

I am not using interFoam too. I am dealing with cavitatingFoam as the fluid solver.

I know that the solid part of the solver can remain untouched, but for the createFluidFields.H file I have a primary problem with converting one of the dictionaries of createFields.H of cavitatingFoam to ptrList. As you said this conversion for a lot of Models and fields were completely straightforward and I did not have any problem by using analogy.

Here is where I am currently stuck:
for baratropicCompressibilityModel in createFields.H file of cavitatingFoam we have:

PHP Code:

 autoPtr<barotropicCompressibilityModelpsiModel =
        
barotropicCompressibilityModel::New
        (
            
thermodynamicProperties,
            
gamma
        
); 

thermodynamicProperties is defined in readThermodynamicProperties.H of cavitatingFoam as an IOdictionary:

PHP Code:

IOdictionary thermodynamicProperties
    
(
        
IOobject
        
(
            
"thermodynamicProperties",
            
runTime.constant(),
            
mesh,
            
IOobject::MUST_READ_IF_MODIFIED,
            
IOobject::NO_WRITE
        
)
    ); 


to incorporate these two in createFluidFields of chtMultiRegionFoam, I need to create something like PtrList<...>thermodynamicPropertiesFluid and then pass it to barotropicCompressibilityModel in forAll loop.

clearly the following line produces error:

PHP Code:

PtrList<IOdictionarythermodynamicPropertiesFluid(fluidRegions.size()); 

PHP Code:

errorno matching function for call to ‘Foam::PtrList<Foam::dictionary>::set(Foam::label&, Foam::IOobject)
        
); 

I searched to find how to pass IOdictionary to ptrList but did not find anything yet.

Then I think I should add following code to the forAll loop of createFluidFields.H too:

PHP Code:

thermodynamicPropertiesFluid.set
       
(
         
i,
         
IOobject
         
(
             
"thermodynamicProperties",
             
runTime.constant(),
             
fluidRegions[i],
             
IOobject::MUST_READ_IF_MODIFIED,
             
IOobject::NO_WRITE
         
)
       );

       
compressibility.set  //added
       
(
         
i,
         new 
barotropicCompressibilityModel
         
(
           
thermodynamicPropertiesFluid[i],
           
gammaFluid[i]
         )
       ); 


I appreciate it if you or anyone who has a similar experience in dealing with this solver can suggest an idea about this coding problem.

**Note: I am using Foam-Extend 4.1.

With thanks and appreciation,
Bana

Kummi April 13, 2022 00:44

Hi, I have one major thing to comment here.
Quote:

PtrList<basicSolidThermo> thermos(solidRegions.size());
PtrList<basicRhoThermo> thermoFluid(fluidRegions.size());
Here basicSolidThermo and basicRhoThermo are classes.
If you pass IOdictionary, OpenFOAM have no clue to access your solver. The reason why you get the error.
I hope this first step will get rid of your half of a problem atleast.
Thank you

Bana April 13, 2022 12:23

Quote:

Originally Posted by Kummi (Post 826155)
Hi, I have one major thing to comment here.
Here basicSolidThermo and basicRhoThermo are classes.
If you pass IOdictionary, OpenFOAM have no clue to access your solver. The reason why you get the error.
I hope this first step will get rid of your half of a problem atleast.
Thank you

But IOdictionary is a class too, Isn't it? like BasicPsiThermo and etc.
I do not know how to make a PtrList of IOdictionary:( ...

Kummi April 13, 2022 14:10

1 Attachment(s)
Hello Bana,
Sorry I didn't mention clearly.
In my case, I have implemented pyrolysis (solid with reaction), so I have used Ptrlist as,
Quote:

PtrList<regionModels:: pyrolysisModels:: pyrolysisModel>tpyrolysis(pyrosolidRegions.size());
// Populate pyrosolid field pointer lists
forAll(pyrosolidRegions, i)
{
Info<< " Adding Pyrolysis model\n" << endl;
tpyrolysis.set (i, regionModels:: pyrolysisModels:: pyrolysisModel:: New(pyrosolidRegions[i]));
}
regionModels:: pyrolysisModels:: pyrolysisModel ==> Pointer ACCESS my source file.
I'm attaching the snap of my header file here. You may get the clear idea. Hope this is useful. And give such a try too.
Thank you

Bana April 14, 2022 07:59

Quote:

Originally Posted by Kummi (Post 826209)
Hello Bana,
Sorry I didn't mention clearly.
In my case, I have implemented pyrolysis (solid with reaction), so I have used Ptrlist as,

regionModels:: pyrolysisModels:: pyrolysisModel ==> Pointer ACCESS my source file.
I'm attaching the snap of my header file here. You may get the clear idea. Hope this is useful. And give such a try too.
Thank you

Tnak you Kummi.

I found the source of error.

I didn't pay attention to the line of error! In fact the declaration of PtrList was ok and I needed to change the following in forAll loop:

PHP Code:

thermodynamicPropertiesFluid.set
      
(
          
i,
          new 
IOdictionary
          
(
              
IOobject
              
(
                  
"thermodynamicProperties",
                  
runTime.constant(),
                  
fluidRegions[i],
                  
IOobject::MUST_READ_IF_MODIFIED,
                  
IOobject::NO_WRITE
              
)
          )
      ); 


khaoula louali June 16, 2022 06:15

coupling icoFoam (plus energy equation) solver with CHT multiregion
 
Hello everyone,

I would like to ask about a solver that can couple coFoam (after introducing the energy equation in this solver) and chtMultiRegionFoam, because I want to add a solid part to the studied model. i have some difficulties in compiling , any body have experience about this?? or another way,just add solid region in my base solver??which way is better??

Regards, [/QUOTE]

Kummi June 16, 2022 07:43

Quote:

Originally Posted by khaoula louali (Post 829909)
Hello everyone,

I would like to ask about a solver that can couple coFoam (after introducing the energy equation in this solver) and chtMultiRegionFoam, because I want to add a solid part to the studied model. i have some difficulties in compiling , any body have experience about this?? or another way,just add solid region in my base solver??which way is better??

Regards,

Kindly keep your questions straight and clear.
Thank you

khaoula louali June 16, 2022 09:56

coupling icoFoam solver with chtMultiRegionFoam
 
Hello,
I am studying on regenerator which consists of two regions solid and fluid.So, I'm trying to develop new solver which combines two preexisting solvers (icoFoam and chtMultiRegionFoam) for solving a system of equations : Continuity, momentum and energy equations of fluid and solid. if someone could help me i will be grateful.
Best Regards



Kummi June 17, 2022 00:02

Hello khaoula,
Let me know how far you struggled to combine two solvers. Have you checked any forum pages related to this and given a try ? If then, kindly update what you have tried and if any error post it here. I believe helping you along from the efforts you made is worth enough. These posts might be helpful to you.
https://www.cfd-online.com/Forums/op...terfoam-2.html
https://www.cfd-online.com/Forums/op...o-regions.html
Feel free to ask !
Thank you

theBananaTrick June 17, 2022 04:41

Hi,

What boundary condition would you use to couple the phases? compressible::turbulentTemperatureCoupledBaffleMix ed[https://www.openfoam.com/documentati...ield_8H.html]? Or something similar to turbulentTemperatureTwoPhaseRadCoupledMixedFvPatch ScalarField.H [https://www.openfoam.com/documentati...Field_8H.html]


Best Regards


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