Lines Matching refs:mesh
523 static PetscErrorCode GmshMeshCreate(GmshMesh **mesh) in GmshMeshCreate() argument
526 PetscCall(PetscNew(mesh)); in GmshMeshCreate()
527 PetscCall(PetscSegBufferCreate(sizeof(PetscInt), 0, &(*mesh)->segbuf)); in GmshMeshCreate()
531 static PetscErrorCode GmshMeshDestroy(GmshMesh **mesh) in GmshMeshDestroy() argument
536 if (!*mesh) PetscFunctionReturn(PETSC_SUCCESS); in GmshMeshDestroy()
537 PetscCall(GmshEntitiesDestroy(&(*mesh)->entities)); in GmshMeshDestroy()
538 PetscCall(GmshNodesDestroy(&(*mesh)->nodelist)); in GmshMeshDestroy()
539 PetscCall(GmshElementsDestroy(&(*mesh)->elements)); in GmshMeshDestroy()
540 PetscCall(PetscFree((*mesh)->periodMap)); in GmshMeshDestroy()
541 PetscCall(PetscFree((*mesh)->vertexMap)); in GmshMeshDestroy()
542 PetscCall(PetscSegBufferDestroy(&(*mesh)->segbuf)); in GmshMeshDestroy()
543 for (r = 0; r < (*mesh)->numRegions; ++r) PetscCall(PetscFree((*mesh)->regionNames[r])); in GmshMeshDestroy()
544 PetscCall(PetscFree3((*mesh)->regionDims, (*mesh)->regionTags, (*mesh)->regionNames)); in GmshMeshDestroy()
545 PetscCall(PetscFree(*mesh)); in GmshMeshDestroy()
549 static PetscErrorCode GmshReadNodes_v22(GmshFile *gmsh, GmshMesh *mesh) in GmshReadNodes_v22() argument
562 mesh->numNodes = num; in GmshReadNodes_v22()
563 mesh->nodelist = nodes; in GmshReadNodes_v22()
580 static PetscErrorCode GmshReadElements_v22(GmshFile *gmsh, GmshMesh *mesh) in GmshReadElements_v22() argument
596 mesh->numElems = num; in GmshReadElements_v22()
597 mesh->elements = elements; in GmshReadElements_v22()
622 PetscCall(PetscSegBufferGet(mesh->segbuf, (size_t)element->numNodes, &element->nodes)); in GmshReadElements_v22()
659 static PetscErrorCode GmshReadEntities_v40(GmshFile *gmsh, GmshMesh *mesh) in GmshReadEntities_v40() argument
673 PetscCall(GmshEntitiesCreate(count, &mesh->entities)); in GmshReadEntities_v40()
678 PetscCall(GmshEntitiesAdd(mesh->entities, (PetscInt)index, dim, eid, &entity)); in GmshReadEntities_v40()
710 static PetscErrorCode GmshReadNodes_v40(GmshFile *gmsh, GmshMesh *mesh) in GmshReadNodes_v40() argument
724 PetscCall(PetscIntCast(numTotalNodes, &mesh->numNodes)); in GmshReadNodes_v40()
725 mesh->nodelist = nodes; in GmshReadNodes_v40()
776 static PetscErrorCode GmshReadElements_v40(GmshFile *gmsh, GmshMesh *mesh) in GmshReadElements_v40() argument
793 PetscCall(PetscIntCast(numTotalElements, &mesh->numElems)); in GmshReadElements_v40()
794 mesh->elements = elements; in GmshReadElements_v40()
801 PetscCall(GmshEntitiesGet(mesh->entities, dim, eid, &entity)); in GmshReadElements_v40()
821 PetscCall(PetscSegBufferGet(mesh->segbuf, (size_t)element->numNodes, &element->nodes)); in GmshReadElements_v40()
930 static PetscErrorCode GmshReadEntities_v41(GmshFile *gmsh, GmshMesh *mesh) in GmshReadEntities_v41() argument
938 PetscCall(GmshEntitiesCreate(count, &mesh->entities)); in GmshReadEntities_v41()
942 PetscCall(GmshEntitiesAdd(mesh->entities, (PetscInt)index, dim, eid, &entity)); in GmshReadEntities_v41()
974 static PetscErrorCode GmshReadNodes_v41(GmshFile *gmsh, GmshMesh *mesh) in GmshReadNodes_v41() argument
987 PetscCall(PetscIntCast(numNodes, &mesh->numNodes)); in GmshReadNodes_v41()
988 mesh->nodelist = nodes; in GmshReadNodes_v41()
989 …if (numEntityBlocks && !mesh->entities) PetscCall(PetscInfo(NULL, "File specifies %" PetscCount_FM… in GmshReadNodes_v41()
995 if (mesh->entities) PetscCall(GmshEntitiesGet(mesh->entities, dim, eid, &entity)); in GmshReadNodes_v41()
1023 static PetscErrorCode GmshReadElements_v41(GmshFile *gmsh, GmshMesh *mesh) in GmshReadElements_v41() argument
1036 PetscCall(PetscIntCast(numElements, &mesh->numElems)); in GmshReadElements_v41()
1037 mesh->elements = elements; in GmshReadElements_v41()
1038 …if (numEntityBlocks && !mesh->entities) PetscCall(PetscInfo(NULL, "File specifies %" PetscCount_FM… in GmshReadElements_v41()
1044 if (mesh->entities) PetscCall(GmshEntitiesGet(mesh->entities, dim, eid, &entity)); in GmshReadElements_v41()
1062 PetscCall(PetscSegBufferGet(mesh->segbuf, element->numNodes, &element->nodes)); in GmshReadElements_v41()
1189 static PetscErrorCode GmshReadPhysicalNames(GmshFile *gmsh, GmshMesh *mesh) in GmshReadPhysicalNames() argument
1197 mesh->numRegions = region; in GmshReadPhysicalNames()
1199 …PetscCall(PetscMalloc3(mesh->numRegions, &mesh->regionDims, mesh->numRegions, &mesh->regionTags, m… in GmshReadPhysicalNames()
1200 for (region = 0; region < mesh->numRegions; ++region) { in GmshReadPhysicalNames()
1212 mesh->regionDims[region] = dim; in GmshReadPhysicalNames()
1213 mesh->regionTags[region] = tag; in GmshReadPhysicalNames()
1214 PetscCall(PetscStrallocpy(name, &mesh->regionNames[region])); in GmshReadPhysicalNames()
1219 static PetscErrorCode GmshReadEntities(GmshFile *gmsh, GmshMesh *mesh) in GmshReadEntities() argument
1224 PetscCall(GmshReadEntities_v41(gmsh, mesh)); in GmshReadEntities()
1227 PetscCall(GmshReadEntities_v40(gmsh, mesh)); in GmshReadEntities()
1233 static PetscErrorCode GmshReadNodes(GmshFile *gmsh, GmshMesh *mesh) in GmshReadNodes() argument
1238 PetscCall(GmshReadNodes_v41(gmsh, mesh)); in GmshReadNodes()
1241 PetscCall(GmshReadNodes_v40(gmsh, mesh)); in GmshReadNodes()
1244 PetscCall(GmshReadNodes_v22(gmsh, mesh)); in GmshReadNodes()
1249 if (mesh->numNodes > 0 && gmsh->nodeEnd >= gmsh->nodeStart) { in GmshReadNodes()
1251 GmshNodes *nodes = mesh->nodelist; in GmshReadNodes()
1252 for (n = 0; n < mesh->numNodes; ++n) { in GmshReadNodes()
1264 GmshNodes *nodes = mesh->nodelist; in GmshReadNodes()
1268 for (n = 0; n < mesh->numNodes; ++n) { in GmshReadNodes()
1277 static PetscErrorCode GmshReadElements(GmshFile *gmsh, GmshMesh *mesh) in GmshReadElements() argument
1282 PetscCall(GmshReadElements_v41(gmsh, mesh)); in GmshReadElements()
1285 PetscCall(GmshReadElements_v40(gmsh, mesh)); in GmshReadElements()
1288 PetscCall(GmshReadElements_v22(gmsh, mesh)); in GmshReadElements()
1293 PetscInt ne = mesh->numElems; in GmshReadElements()
1294 GmshElement *elements = mesh->elements; in GmshReadElements()
1310 PetscCall(GmshElementsCreate(mesh->numElems, &mesh->elements)); in GmshReadElements()
1314 for (e = 0; e < ne; ++e) mesh->elements[offset[key(e)]++] = elements[e]; in GmshReadElements()
1320 GmshElement *elem = mesh->numElems ? mesh->elements : NULL; in GmshReadElements()
1321 mesh->dim = elem ? GmshCellMap[elem->cellType].dim : 0; in GmshReadElements()
1322 mesh->order = elem ? GmshCellMap[elem->cellType].order : 0; in GmshReadElements()
1327 PetscInt dim = mesh->dim, e, n, v; in GmshReadElements()
1329 PetscCall(PetscBTCreate(mesh->numNodes, &vtx)); in GmshReadElements()
1332 mesh->numCells = 0; in GmshReadElements()
1333 for (e = 0; e < mesh->numElems; ++e) { in GmshReadElements()
1334 GmshElement *elem = mesh->elements + e; in GmshReadElements()
1335 if (elem->dim == dim && dim > 0) mesh->numCells++; in GmshReadElements()
1340 mesh->numVerts = 0; in GmshReadElements()
1341 PetscCall(PetscMalloc1(mesh->numNodes, &mesh->vertexMap)); in GmshReadElements()
1342 …for (n = 0; n < mesh->numNodes; ++n) mesh->vertexMap[n] = PetscBTLookup(vtx, n) ? mesh->numVerts++… in GmshReadElements()
1349 static PetscErrorCode GmshReadPeriodic(GmshFile *gmsh, GmshMesh *mesh) in GmshReadPeriodic() argument
1354 PetscCall(PetscMalloc1(mesh->numNodes, &mesh->periodMap)); in GmshReadPeriodic()
1355 for (n = 0; n < mesh->numNodes; ++n) mesh->periodMap[n] = n; in GmshReadPeriodic()
1358 PetscCall(GmshReadPeriodic_v41(gmsh, mesh->periodMap)); in GmshReadPeriodic()
1361 PetscCall(GmshReadPeriodic_v40(gmsh, mesh->periodMap)); in GmshReadPeriodic()
1366 for (n = 0; n < mesh->numNodes; ++n) in GmshReadPeriodic()
1367 …while (mesh->periodMap[n] != mesh->periodMap[mesh->periodMap[n]]) mesh->periodMap[n] = mesh->perio… in GmshReadPeriodic()
1370 mesh->numVerts = 0; in GmshReadPeriodic()
1371 for (n = 0; n < mesh->numNodes; ++n) in GmshReadPeriodic()
1372 if (mesh->vertexMap[n] >= 0) /* is vertex */ in GmshReadPeriodic()
1373 if (mesh->periodMap[n] == n) /* is primary */ in GmshReadPeriodic()
1374 mesh->vertexMap[n] = mesh->numVerts++; in GmshReadPeriodic()
1375 for (n = 0; n < mesh->numNodes; ++n) in GmshReadPeriodic()
1376 if (mesh->vertexMap[n] >= 0) /* is vertex */ in GmshReadPeriodic()
1377 if (mesh->periodMap[n] != n) /* is corresponding */ in GmshReadPeriodic()
1378 mesh->vertexMap[n] = mesh->vertexMap[mesh->periodMap[n]]; in GmshReadPeriodic()
1572 GmshMesh *mesh = NULL; in DMPlexCreateGmsh() local
1631 PetscCall(GmshMeshCreate(&mesh)); in DMPlexCreateGmsh()
1664 PetscCall(GmshReadPhysicalNames(gmsh, mesh)); in DMPlexCreateGmsh()
1675 PetscCall(GmshReadEntities(gmsh, mesh)); in DMPlexCreateGmsh()
1684 PetscCall(GmshReadNodes(gmsh, mesh)); in DMPlexCreateGmsh()
1690 PetscCall(GmshReadElements(gmsh, mesh)); in DMPlexCreateGmsh()
1700 PetscCall(GmshReadPeriodic(gmsh, mesh)); in DMPlexCreateGmsh()
1708 dim = mesh->dim; in DMPlexCreateGmsh()
1709 order = mesh->order; in DMPlexCreateGmsh()
1710 numNodes = mesh->numNodes; in DMPlexCreateGmsh()
1711 numElems = mesh->numElems; in DMPlexCreateGmsh()
1712 numVerts = mesh->numVerts; in DMPlexCreateGmsh()
1713 numCells = mesh->numCells; in DMPlexCreateGmsh()
1716 GmshElement *elemA = mesh->numCells > 0 ? mesh->elements : NULL; in DMPlexCreateGmsh()
1717 GmshElement *elemB = PetscSafePointerPlusOffset(elemA, mesh->numCells - 1); in DMPlexCreateGmsh()
1757 GmshElement *elem = mesh->elements + cell; in DMPlexCreateGmsh()
1768 GmshElement *elem = mesh->elements + cell; in DMPlexCreateGmsh()
1771 const PetscInt vv = mesh->vertexMap[nn]; in DMPlexCreateGmsh()
1791 const PetscInt Nr = useregions ? mesh->numRegions : 0; in DMPlexCreateGmsh()
1795 GmshElement *elem = mesh->elements + e; in DMPlexCreateGmsh()
1808 if (mesh->regionDims[r] != dim) continue; in DMPlexCreateGmsh()
1809 …if (mesh->regionTags[r] == tag) PetscCall(DMSetLabelValue_Fast(*dm, ®ionSets[r], mesh->regionNa… in DMPlexCreateGmsh()
1825 const PetscInt vv = mesh->vertexMap[nn]; in DMPlexCreateGmsh()
1838 if (mesh->regionDims[r] != dim - 1) continue; in DMPlexCreateGmsh()
1839 …if (mesh->regionTags[r] == tag) PetscCall(DMSetLabelValue_Fast(*dm, ®ionSets[r], mesh->regionNa… in DMPlexCreateGmsh()
1854 const PetscInt vv = mesh->vertexMap[nn]; in DMPlexCreateGmsh()
1865 if (mesh->regionDims[r] != 1) continue; in DMPlexCreateGmsh()
1866 …if (mesh->regionTags[r] == tag) PetscCall(DMSetLabelValue_Fast(*dm, ®ionSets[r], mesh->regionNa… in DMPlexCreateGmsh()
1875 const PetscInt vv = mesh->vertexMap[nn]; in DMPlexCreateGmsh()
1884 if (mesh->regionDims[r] != 0) continue; in DMPlexCreateGmsh()
1885 …if (mesh->regionTags[r] == tag) PetscCall(DMSetLabelValue_Fast(*dm, ®ionSets[r], mesh->regionNa… in DMPlexCreateGmsh()
1892 const PetscInt vv = mesh->vertexMap[v]; in DMPlexCreateGmsh()
1893 const PetscInt *tags = &mesh->nodelist->tag[v * GMSH_MAX_TAGS]; in DMPlexCreateGmsh()
1904 …if (mesh->regionTags[r] == tag) PetscCall(DMSetLabelValue_Fast(*dm, ®ionSets[r], mesh->regionNa… in DMPlexCreateGmsh()
1934 if (mesh->vertexMap[n] >= 0) { in DMPlexCreateGmsh()
1935 if (PetscUnlikely(mesh->periodMap[n] != n)) { in DMPlexCreateGmsh()
1936 PetscInt m = mesh->periodMap[n]; in DMPlexCreateGmsh()
1937 PetscCall(PetscBTSet(periodicVerts, mesh->vertexMap[n])); in DMPlexCreateGmsh()
1938 PetscCall(PetscBTSet(periodicVerts, mesh->vertexMap[m])); in DMPlexCreateGmsh()
1992 double *coords = mesh ? mesh->nodelist->xyz : NULL; in DMPlexCreateGmsh()
2004 GmshElement *elem = mesh->elements + cell; in DMPlexCreateGmsh()
2046 double *coords = mesh ? mesh->nodelist->xyz : NULL; in DMPlexCreateGmsh()
2097 if (mesh->vertexMap[n] >= 0) nodeMap[mesh->vertexMap[n]] = n; in DMPlexCreateGmsh()
2113 GmshElement *elem = mesh->elements + c - cStart; in DMPlexCreateGmsh()
2167 PetscCall(GmshMeshDestroy(&mesh)); in DMPlexCreateGmsh()