Using #codeStream to set initial field for parallel run
Dear Foamers
I use the #codeStream feature to set up an initial field. This works fine for running on a single core. However, after decomposing the case it does not work in parallel and gives an error that has nothing to do with the field in question. It actually took me all day to figure out that removing the #codeStream fixed the case. So can anyone kindly confirm whether it is possible or not to use #codeStream to set initial fields for parallel runs? Best regards, Hisham El Safti |
Quote:
|
Hello Bernhard,
Actually I think your remark definitely points what's wrong. I'll try to give more info. I'm developing a solver in which I have an object (derived from a new class) assigned to each cellZone. The objects are contained (in the solver) in a pointer list (the pointers are for a mother class). Each cellZone might have an object from a different child class. The need for this is that each child class has its own implemented calculations (model). To save the numbers from the time step calculations (to allow for run continuation) an IOField<scalarField>, an IOField<vectorField> and an IOField<symmTensorField> are used to store numerical values (in solver) from the objects and are reread if present. The advantage of this is that not all objects need to save the same number of variables. So I think maybe there is a lot of traffic between processors ... I really have little ideas about how to reduce this. I would appreciate your advice. I can also email you the solver and a case if you're interested! Thanks in advance and best regards Hisham El Safti |
what's the error?
in etc/controlDict, is this set? fileModificationChecking timeStamp; |
Hello Niklas
In controlDict: fileModificationChecking timeStampMaster; The case runs in serial OK. The error in the parallel run happens in: Code:
volSymmTensorField strain Code:
[6] #0 Foam::error::printStack(Foam::Ostream&)[4] #0 [5] #0 Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)[2] #0 Foam::error::printStack(Foam::Ostream&)[3] #0 Foam::error::printStack(Foam::Ostream&) in "/opt/openfoam201/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" |
what happens when you switch to using timeStamp instead of timeStampMaster?
|
does this work? (it should)
volSymmTensorField strain = 0.5*twoSymm(fvc::grad(D)); the only problem I can think of is that you're trying to register all processor-meshes on the same timeName()/mesh database. |
I will check that now. But it is worth mentioning that there is a timeVaryingMapped BC that is distributed to several processors. I found here that this could be a problem (actually the case has ran without the codeFixed (using the timeVaryMap BC) but I had to modify the mesh and afterwards it didn't work ... Further modifications of the mesh does not help!
|
All times are GMT -4. The time now is 13:25. |