CFD Online Logo CFD Online URL
Home > Forums > OpenFOAM Programming & Development

regionCouple in multiRegionFoam

Register Blogs Members List Search Today's Posts Mark Forums Read

LinkBack Thread Tools Display Modes
Old   February 17, 2011, 11:33
Default regionCouple in multiRegionFoam
Senior Member
Matthias Voß
Join Date: Mar 2009
Location: Berlin, Germany
Posts: 449
Rep Power: 13
mvoss is on a distinguished road

this is regarding a combination of the regionCouple BC and the chtMultiRegionFoam solver.
I am working on a new solver for mhd-application starting from the chtMultiregionFoam with its fields setup like
                    new volVectorField
so for the relevant variables (e.g. U) there are sets (the regions) and i end up with as many sets for the variables as i have regions... which is totally fine so far.
Typically you have scalar values like T passing from one region to the other while there is a need of BC to treat the "passing" (e.g. solidWallMixedTemperatureCoupled) which are also working in my case for the electricPotential (see the other posts here in the forum).
But how is it about vectorial values (like the electric Field j)?
At the "internal" BC for this values i need to specify smth. but actually one just wants the neighbor values being recognized. A zeroGradient isnīt working for absolutely logical reasons because even if the simulation is running nicely and converging... the regions arenīt interacting over the internalBC... letīs say they donīt see each other they are just zeroGradient. So this is half the way wrong...the Gradient needs to know about the value on "the other side".

If i look at regionCouple: this is exactly what we need, the values are connected.
And hereīs the kicker: how can i initialize my fields like i do in chtMultiRegionFoam (one after another because of
forAll(fluidRegions, i)
forAll(solidRegions, i)
) while the regionCouple wants to have the corresponding value for the shadowPatch at the same time??
Adding field J 


    request for volScalarField Elpot from objectRegistry SOLID failed
    available objects of type volScalarField are

Combining multiple Regions like this is like a 1:1 GGI...
Hope you can get my point.
Looking forward for some thoughts on that.

Tanks in advance,

mvoss is offline   Reply With Quote

Old   March 7, 2011, 14:02
Ivor Clifford
Join Date: Mar 2009
Location: Switzerland
Posts: 91
Rep Power: 10
cliffoi is on a distinguished road
The boundaries from chtMultiRegionFoam and the regionCouple boundaries both use harmonic interpolation at the boundary to preserve the flux at the boundary face. This doesn't necessarily make sense for vectors but provided you know how you want to treat the boundary you can create a custom vector boundary condition using these classes as examples.
To initialize all the fields without errors, remove the creation of your mapping and neighbour fields from the boundary constructors. This is done in regionCouple by storing names of neighbour patches, regions and fields rather than references to the patches, and then using an on-the-fly lookup for the neighbouring patch. The other option is to use pointers, e.g. for patchToPatchInterpolation, and only set the pointer when needed. The final thing... make sure you don't call correctBoundaryConditions() before all fields and meshes have been created.

Hope this helps
cliffoi is offline   Reply With Quote


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

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