CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Running, Solving & CFD

Parallel interDyMFoam cellLevel problem

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

Like Tree1Likes
  • 1 Post By tikulju

Reply
 
LinkBack Thread Tools Display Modes
Old   July 11, 2012, 13:24
Default Parallel interDyMFoam cellLevel problem
  #1
New Member
 
Tyler V
Join Date: Jul 2012
Posts: 24
Rep Power: 5
tgvosk is on a distinguished road
I am working with the interDyMFoam solver in parallel and have run into a problem with the adaptive mesh refinement. For my case, I run a few time steps serially to pre-adapt the mesh to the initial condition (creating time folders TIME1 and TIME2, for example), then run decomposePar to begin the main run in parallel (starting at time folder TIME2).

The 'startFrom' value in my controlDict is set to 'latestTime' and the pre-adaptation is done using a modified version of interDyMFoam with only the mesh adaptation routines.

The problem I am having is that even though decomposePar puts cellLevel from TIME2 into the processorX/TIME2 folder, it is not put into the processorX/TIME2/polyMesh folder and the parallel run does not load it. Even though the mesh is already refined, it resets the level to 0 everywhere on the first parallel time step, which creates excessive refinement.

If I do the main run serially, this problem does not occur. How can I make decomposePar also decompose the cellLevel into the polyMesh folder so the parallel run loads the correct cellLevel rather than resetting it to 0? Any help would be greatly appreciated!

Last edited by tgvosk; July 11, 2012 at 13:37. Reason: Noticed that there was no cellLevel in polyMesh
tgvosk is offline   Reply With Quote

Old   October 2, 2012, 17:13
Default
  #2
Senior Member
 
kmooney's Avatar
 
Kyle Mooney
Join Date: Jul 2009
Location: Amherst, MA USA - San Diego, CA USA
Posts: 285
Rep Power: 9
kmooney is on a distinguished road
I noticed the same problem. In response I wrote a quick exe. that would load the cellLevel volScalarField and write it into the correct directory as a labelList.

This does not fix the problem. After resuming the run post-load balance no further hex cell refinement operations would occur for some reason. The hex refinement engine also appears to be looking for a pointScalarField pointLevel. Unfortunately this is not mapped at all so there lies another problem.

So far I am unable to find a good way to load balance with interDyMFoam, which is confusing considering it may be the solver which demands dynamic load balancing more than any other.
kmooney is offline   Reply With Quote

Old   October 2, 2012, 17:34
Default
  #3
Senior Member
 
kmooney's Avatar
 
Kyle Mooney
Join Date: Jul 2009
Location: Amherst, MA USA - San Diego, CA USA
Posts: 285
Rep Power: 9
kmooney is on a distinguished road
There is a function that might be of use:

void Foam::hexRef8::distribute(const mapDistributePolyMesh& map)

from hexRef8.C

After adding some extra pointers I was able to send the mapDistributePolyMesh generated by fvMeshDistribute to this function to no avail. I received all sorts of seg faults.

This is supposed to map the cellLevel, pointLevel, and refinementHistory fields. In theory this is what we need...
kmooney is offline   Reply With Quote

Old   February 17, 2014, 10:48
Default Hi!
  #4
New Member
 
Timo Kulju
Join Date: Aug 2009
Posts: 21
Rep Power: 8
tikulju is on a distinguished road
Have you been able to get this load balancing to work? It's buzzling me again... I tried to hack the redistributePar, and got the mesh to be distributed, but the fields do not. Havent' tried the hexRef8::distribute yet...
tikulju is offline   Reply With Quote

Old   February 17, 2014, 16:09
Default Load Balancing
  #5
New Member
 
Tyler V
Join Date: Jul 2012
Posts: 24
Rep Power: 5
tgvosk is on a distinguished road
I have a parallel load balancing library working with 2.1.x, but it requires fixing a number of bugs in various parts of the mesh libraries (particularly in the distribute functions).

I plan to make the library repo public sometime in the next couple months.
tgvosk is offline   Reply With Quote

Old   February 19, 2014, 03:24
Thumbs up
  #6
New Member
 
Timo Kulju
Join Date: Aug 2009
Posts: 21
Rep Power: 8
tikulju is on a distinguished road
Maybe some could explain this dilemma. By executing

Code:
autoPtr<mapDistributePolyMesh> map = distributor.distribute(finalDecomp);
only the p and U* fields gets distributed. Some of the alpha*-fields does but some do not. The simulation ends in in "double free or corruption"-message, when writing the data. Any hints how to get the other fields mapped?

For the refinement history stuff, I think they could be mapped as

Code:
    
    // Update celllevel
    map().distributeCellData(cellLevel);
    // Update pointlevel
    map().distributePointData(pointLevel);

    // Update refinement tree
    if (history().active())
    {
        history().distribute(map);
    }
like in hexRef8::distribute. I tried to declare (before distributing the mesh) cellLevel and pointLevel as labelIOLists and history as refinementHistory, and distributing them as above, but without any success. Any ideas?
hua1015 likes this.
tikulju is offline   Reply With Quote

Reply

Tags
adaptive mesh refinement, openfoam

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
problem in the CFX12.1 parallel computation BalanceChen ANSYS 2 July 7, 2011 10:26
Parallel UDF problem, hello world version pilou FLUENT 0 March 10, 2011 09:20
Partitioning problem with interDyMFoam DLC OpenFOAM 0 March 7, 2011 18:28
A Strange Problem in making Parallel (Ansys/CFX 12) a.sarami CFX 13 October 7, 2010 01:33
cfx4 parallel sover Problem!! HELP Richard.A CFX 2 August 3, 2002 03:54


All times are GMT -4. The time now is 02:34.