| Anonymous | Login | Signup for a new account | 2013-05-24 04:01 BST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | ||||||
| 0000577 | OpenFOAM | [All Projects] Bug | public | 2012-07-09 12:05 | 2013-03-15 16:33 | ||||||
| Reporter | nogenmyr | ||||||||||
| Assigned To | |||||||||||
| Priority | normal | Severity | crash | Reproducibility | always | ||||||
| Status | new | Resolution | open | ||||||||
| Platform | Linux | OS | CentOS | OS Version | 5.4 | ||||||
| Product Version | 2.1.x | ||||||||||
| Target Version | Fixed in Version | ||||||||||
| Summary | 0000577: spray and dynamic meshes... | ||||||||||
| Description | References to meshTools::constrainToMeshCentre meshTools::constrainDirection in InjectionModel.C KinematicParcel.C seems to cause MPI errors upon parcel injection. Commenting the lines out gives a running code. (hopefully correct for at least 3D cases) | ||||||||||
| Steps To Reproduce | Transform the aachenBomb case into a dynamicMesh case and run with sprayEngineFoam solver in parallel. | ||||||||||
| Tags | No tags attached. | ||||||||||
| Attached Files | |||||||||||
Notes |
|
|
(0001621) nogenmyr (reporter) 2012-08-22 09:39 |
Ok, I've been digging a bit further. meshTools::constrainToMeshCentre calls for polyMesh::geometricD(), which in turn calls polyMesh::calcDirections() only when there was a mesh update. polyMesh::calcDirections() has in turn a few MPI calls. During run, not all processors will call constrainToMeshCentre equal amounts of time, which causes a sync problem. (my understanding). A less ugly hack than suggested above would be to let all processors call constrainToMeshCentre the same amount of times, even they do not need it for their own: In InjectionModel<CloudType>::injectSteadyState that means adding an else-statement: if (cellI > -1) { .... (unaltered) } else { point p(0.,0.,0.); Vector<scalar> v(0.,0.,0.); meshTools::constrainToMeshCentre(mesh, p); meshTools::constrainDirection ( mesh, mesh.solutionD(), v ); } |