View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000336 | OpenFOAM | Bug | public | 2011-11-11 08:15 | 2011-11-16 12:51 |
Reporter | Assigned To | ||||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Summary | 0000336: dieselFoam injects duplicate parcels at an interprocessor interface | ||||
Description | With reference to parallel computations only. If a parcel is injected along an interprocessor interface it is "claimed" by both the adjoining processor domains with the result that two parcels are in fact injected. ( Further duplication is possible if 2 interprocessor interfaces lie "close" to the point of injection). As an aside, although this processor decomposition appears to be very inefficient (owing to repeating processor-processor transfers, shifts etc.) and although it does tend to produce unstable results (usually observed through a collapse in p or singularity in U) it might deserve a little attention, if only to run short test cases. The difference between "serial" and "parallel" results is noticeable. In the case I happened to be considering the spray size increased by approximately 25%. | ||||
Steps To Reproduce | 1) Decompose a block using the following "simple" decomposition: ( 2 2 1) 2) inject spray along the z axis and with an injection area extending over the intersection of processor interfaces. 3) For ease of diagnostics, specify an injection of one parcel per (cfd) timestep. | ||||
Additional Information | In sprayInject.C instead of (Line126) if( injectorCell >= 0 ) I'm currently using if ( injectorCell >= 0 && ( Pstream::myProcNo() == iProc || !Pstream::parRun() ) ) where iProc corresponds to any one of the processors that "claim" the parcel (cf. findInjectorCell.H). I'm sure you have better ideas regarding a more elegant implementation. Regards, Richard K. | ||||
Tags | No tags attached. | ||||