CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Mesh Utilities (http://www.cfd-online.com/Forums/openfoam-meshing-utilities/)
-   -   CreatePatch after subsetMesh (http://www.cfd-online.com/Forums/openfoam-meshing-utilities/61537-createpatch-after-subsetmesh.html)

maka August 25, 2008 15:21

after using createPatch to mak
 
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

maka August 27, 2008 06:25

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.

maka August 27, 2008 08:28

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 09:00.