CreatePatch after subsetMesh
after using createPatch to make a patch how can we interpolate the field to be consistent with the new mesh? Thanks.
details: (1) I used subsetMesh to make a new mesh with oldInternalFaces as added patch. (2) I used createPatch to split oldInternalFaces into two parts and redistribute those parts to two patches of the original mesh. This is done by modifing the fvMeshSubset. I'm using V1.3 so I had to add a new subMesh() that returns a non-const reference to fvMesh. (3) now the new mesh has the same number of patches of original mesh but two patches has been changed. I can see the new mesh in paraFoam and it is OK. (4) When I tried to borrow the part of code of subsetMesh that subset the field it crashed with error at the end of the message. (5) I did some checks that shows that if step 2 is removed every thing works fine. It has to be that fvMeshSubset::interpolate does not work if one of the patches changed the number of faces that belongs to it. (6) my question is: after using createPatch to make a patch how can we interpolate the field to be consistent with the new mesh? Thanks. error message:Subsetting field k Subsetting field nuSgs Subsetting field p Subsetting field U Writing polyMesh to time 0.004 Foam::error::printStack(Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&) Foam::sigSegv::sigSegvHandler(int) /lib64/tls/libc.so.6 [0x38ce72e2f0] std::basic_ostream<char,> >& std::operator<<>, std::allocator<char> >(std::basic_ostream<char,> >&, std::basic_string<char,>, std::allocator<char> > const&) Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifSstream::write(Foam::word const&) Foam::operator<<(Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&, Foam::word const&) Foam::GeometricField<double,>::GeometricBoundaryFi eld::writeEntry(Foam::word const&, Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&) const Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream& Foam::operator<<>(Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&, Foam::GeometricField<double,> const&) Foam::GeometricField<double,>::writeData(Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&) const Foam::regIOobject::write(Foam::IOstream::streamFor mat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) const Foam::regIOobject::write() const modifyMesh.02 [0x418111] __libc_start_main __gxx_personality_v0 Segmentation fault |
I think I knew the reason. Ste
I think I knew the reason. Step (1) need to be done on both the mesh and fields (I did not do it to the fields) then, step (2) need also to be done for both the mesh and the fields. This means that I have to make createPatch to work on both the mesh and the fields. I looked the src of createPatch and it seems that it only works on the mesh but not the fields.
|
mapFields seems to be the solu
mapFields seems to be the solution. After createPatch, mapFields is used to generate the new fields.
|
All times are GMT -4. The time now is 20:35. |