Lines Matching refs:gmsh

212 static PetscErrorCode GmshBufferGet(GmshFile *gmsh, PetscCount count, size_t eltsize, void *buf)  in GmshBufferGet()  argument
217 if (gmsh->wlen < size) { in GmshBufferGet()
218 PetscCall(PetscFree(gmsh->wbuf)); in GmshBufferGet()
219 PetscCall(PetscMalloc(size, &gmsh->wbuf)); in GmshBufferGet()
220 gmsh->wlen = size; in GmshBufferGet()
222 *(void **)buf = size ? gmsh->wbuf : NULL; in GmshBufferGet()
229 static PetscErrorCode GmshBufferSizeGet(GmshFile *gmsh, PetscCount count, void *buf) in GmshBufferSizeGet() argument
231 size_t dataSize = (size_t)gmsh->dataSize; in GmshBufferSizeGet()
235 if (gmsh->slen < size) { in GmshBufferSizeGet()
236 PetscCall(PetscFree(gmsh->sbuf)); in GmshBufferSizeGet()
237 PetscCall(PetscMalloc(size, &gmsh->sbuf)); in GmshBufferSizeGet()
238 gmsh->slen = size; in GmshBufferSizeGet()
240 *(void **)buf = size ? gmsh->sbuf : NULL; in GmshBufferSizeGet()
247 static PetscErrorCode GmshRead(GmshFile *gmsh, void *buf, PetscCount count, PetscDataType dtype) in GmshRead() argument
253 PetscCall(PetscViewerRead(gmsh->viewer, buf, icount, NULL, dtype)); in GmshRead()
254 if (gmsh->byteSwap) PetscCall(PetscByteSwap(buf, dtype, icount)); in GmshRead()
258 static PetscErrorCode GmshReadString(GmshFile *gmsh, char *buf, PetscCount count) in GmshReadString() argument
264 PetscCall(PetscViewerRead(gmsh->viewer, buf, icount, NULL, PETSC_STRING)); in GmshReadString()
268 static PetscErrorCode GmshMatch(PETSC_UNUSED GmshFile *gmsh, const char Section[], char line[PETSC_… in GmshMatch() argument
275 static PetscErrorCode GmshExpect(GmshFile *gmsh, const char Section[], char line[PETSC_MAX_PATH_LEN… in GmshExpect() argument
280 PetscCall(GmshMatch(gmsh, Section, line, &match)); in GmshExpect()
285 static PetscErrorCode GmshReadSection(GmshFile *gmsh, char line[PETSC_MAX_PATH_LEN]) in GmshReadSection() argument
291 PetscCall(GmshReadString(gmsh, line, 1)); in GmshReadSection()
292 PetscCall(GmshMatch(gmsh, "$Comments", line, &match)); in GmshReadSection()
295 PetscCall(GmshReadString(gmsh, line, 1)); in GmshReadSection()
296 PetscCall(GmshMatch(gmsh, "$EndComments", line, &match)); in GmshReadSection()
303 static PetscErrorCode GmshReadEndSection(GmshFile *gmsh, const char EndSection[], char line[PETSC_M… in GmshReadEndSection() argument
306 PetscCall(GmshReadString(gmsh, line, 1)); in GmshReadEndSection()
307 PetscCall(GmshExpect(gmsh, EndSection, line)); in GmshReadEndSection()
314 static PetscErrorCode GmshReadPetscInt(GmshFile *gmsh, PetscInt *buf, PetscCount count) in GmshReadPetscInt() argument
317 size_t dataSize = (size_t)gmsh->dataSize; in GmshReadPetscInt()
321 PetscCall(GmshRead(gmsh, buf, count, PETSC_INT)); in GmshReadPetscInt()
324 PetscCall(GmshBufferSizeGet(gmsh, count, &ibuf)); in GmshReadPetscInt()
325 PetscCall(GmshRead(gmsh, ibuf, count, PETSC_ENUM)); in GmshReadPetscInt()
329 PetscCall(GmshBufferSizeGet(gmsh, count, &ibuf)); in GmshReadPetscInt()
330 PetscCall(GmshRead(gmsh, ibuf, count, PETSC_LONG)); in GmshReadPetscInt()
334 PetscCall(GmshBufferSizeGet(gmsh, count, &ibuf)); in GmshReadPetscInt()
335 PetscCall(GmshRead(gmsh, ibuf, count, PETSC_INT64)); in GmshReadPetscInt()
344 static PetscErrorCode GmshReadPetscCount(GmshFile *gmsh, PetscCount *buf, PetscCount count) in GmshReadPetscCount() argument
347 size_t dataSize = (size_t)gmsh->dataSize; in GmshReadPetscCount()
351 PetscCall(GmshRead(gmsh, buf, count, PETSC_COUNT)); in GmshReadPetscCount()
354 PetscCall(GmshBufferSizeGet(gmsh, count, &ibuf)); in GmshReadPetscCount()
355 PetscCall(GmshRead(gmsh, ibuf, count, PETSC_ENUM)); in GmshReadPetscCount()
359 PetscCall(GmshBufferSizeGet(gmsh, count, &ibuf)); in GmshReadPetscCount()
360 PetscCall(GmshRead(gmsh, ibuf, count, PETSC_LONG)); in GmshReadPetscCount()
364 PetscCall(GmshBufferSizeGet(gmsh, count, &ibuf)); in GmshReadPetscCount()
365 PetscCall(GmshRead(gmsh, ibuf, count, PETSC_INT64)); in GmshReadPetscCount()
374 static PetscErrorCode GmshReadInt(GmshFile *gmsh, int *buf, PetscCount count) in GmshReadInt() argument
377 PetscCall(GmshRead(gmsh, buf, count, PETSC_ENUM)); in GmshReadInt()
384 static PetscErrorCode GmshReadDouble(GmshFile *gmsh, double *buf, PetscCount count) in GmshReadDouble() argument
387 PetscCall(GmshRead(gmsh, buf, count, PETSC_DOUBLE)); in GmshReadDouble()
549 static PetscErrorCode GmshReadNodes_v22(GmshFile *gmsh, GmshMesh *mesh) in GmshReadNodes_v22() argument
551 PetscViewer viewer = gmsh->viewer; in GmshReadNodes_v22()
552 PetscBool byteSwap = gmsh->byteSwap; in GmshReadNodes_v22()
580 static PetscErrorCode GmshReadElements_v22(GmshFile *gmsh, GmshMesh *mesh) in GmshReadElements_v22() argument
582 PetscViewer viewer = gmsh->viewer; in GmshReadElements_v22()
583 PetscBool binary = gmsh->binary; in GmshReadElements_v22()
584 PetscBool byteSwap = gmsh->byteSwap; in GmshReadElements_v22()
589 PetscInt *nodeMap = gmsh->nodeMap; in GmshReadElements_v22()
659 static PetscErrorCode GmshReadEntities_v40(GmshFile *gmsh, GmshMesh *mesh) in GmshReadEntities_v40() argument
661 PetscViewer viewer = gmsh->viewer; in GmshReadEntities_v40()
662 PetscBool byteSwap = gmsh->byteSwap; in GmshReadEntities_v40()
684 PetscCall(GmshBufferGet(gmsh, num, sizeof(int), &ibuf)); in GmshReadEntities_v40()
692 PetscCall(GmshBufferGet(gmsh, lnum, sizeof(int), &ibuf)); in GmshReadEntities_v40()
710 static PetscErrorCode GmshReadNodes_v40(GmshFile *gmsh, GmshMesh *mesh) in GmshReadNodes_v40() argument
712 PetscViewer viewer = gmsh->viewer; in GmshReadNodes_v40()
713 PetscBool byteSwap = gmsh->byteSwap; in GmshReadNodes_v40()
730 if (gmsh->binary) { in GmshReadNodes_v40()
735 PetscCall(GmshBufferGet(gmsh, numNodes, nbytes, &cbuf)); in GmshReadNodes_v40()
776 static PetscErrorCode GmshReadElements_v40(GmshFile *gmsh, GmshMesh *mesh) in GmshReadElements_v40() argument
778 PetscViewer viewer = gmsh->viewer; in GmshReadElements_v40()
779 PetscBool byteSwap = gmsh->byteSwap; in GmshReadElements_v40()
785 PetscInt *nodeMap = gmsh->nodeMap, icnt; in GmshReadElements_v40()
808 PetscCall(GmshBufferGet(gmsh, (1 + numNodes) * numElements, sizeof(int), &ibuf)); in GmshReadElements_v40()
829 static PetscErrorCode GmshReadPeriodic_v40(GmshFile *gmsh, PetscInt periodicMap[]) in GmshReadPeriodic_v40() argument
831 PetscViewer viewer = gmsh->viewer; in GmshReadPeriodic_v40()
832 int fileFormat = gmsh->fileFormat; in GmshReadPeriodic_v40()
833 PetscBool binary = gmsh->binary; in GmshReadPeriodic_v40()
834 PetscBool byteSwap = gmsh->byteSwap; in GmshReadPeriodic_v40()
837 PetscInt *nodeMap = gmsh->nodeMap; in GmshReadPeriodic_v40()
930 static PetscErrorCode GmshReadEntities_v41(GmshFile *gmsh, GmshMesh *mesh) in GmshReadEntities_v41() argument
937 PetscCall(GmshReadPetscCount(gmsh, count, 4)); in GmshReadEntities_v41()
941 PetscCall(GmshReadInt(gmsh, &eid, 1)); in GmshReadEntities_v41()
943 PetscCall(GmshReadDouble(gmsh, entity->bbox, (dim == 0) ? 3 : 6)); in GmshReadEntities_v41()
944 PetscCall(GmshReadPetscCount(gmsh, &numTags, 1)); in GmshReadEntities_v41()
945 PetscCall(GmshBufferGet(gmsh, numTags, sizeof(int), &tags)); in GmshReadEntities_v41()
946 PetscCall(GmshReadInt(gmsh, tags, numTags)); in GmshReadEntities_v41()
951 PetscCall(GmshReadPetscCount(gmsh, &numTags, 1)); in GmshReadEntities_v41()
952 PetscCall(GmshBufferGet(gmsh, numTags, sizeof(int), &tags)); in GmshReadEntities_v41()
953 PetscCall(GmshReadInt(gmsh, tags, numTags)); in GmshReadEntities_v41()
974 static PetscErrorCode GmshReadNodes_v41(GmshFile *gmsh, GmshMesh *mesh) in GmshReadNodes_v41() argument
983 PetscCall(GmshReadPetscCount(gmsh, sizes, 4)); in GmshReadNodes_v41()
991 PetscCall(GmshReadInt(gmsh, info, 3)); in GmshReadNodes_v41()
998 PetscCall(GmshReadPetscCount(gmsh, &numNodesBlock, 1)); in GmshReadNodes_v41()
999 PetscCall(GmshReadPetscInt(gmsh, nodes->id + node, numNodesBlock)); in GmshReadNodes_v41()
1000 PetscCall(GmshReadDouble(gmsh, nodes->xyz + node * 3, numNodesBlock * 3)); in GmshReadNodes_v41()
1008 PetscCall(PetscIntCast(sizes[2], &gmsh->nodeStart)); in GmshReadNodes_v41()
1009 PetscCall(PetscIntCast(sizes[3] + 1, &gmsh->nodeEnd)); in GmshReadNodes_v41()
1023 static PetscErrorCode GmshReadElements_v41(GmshFile *gmsh, GmshMesh *mesh) in GmshReadElements_v41() argument
1029 PetscInt *nodeMap = gmsh->nodeMap, *ibuf = NULL; in GmshReadElements_v41()
1032 PetscCall(GmshReadPetscCount(gmsh, sizes, 4)); in GmshReadElements_v41()
1040 PetscCall(GmshReadInt(gmsh, info, 3)); in GmshReadElements_v41()
1049 PetscCall(GmshReadPetscCount(gmsh, &numBlockElements, 1)); in GmshReadElements_v41()
1050 PetscCall(GmshBufferGet(gmsh, (1 + numNodes) * numBlockElements, sizeof(PetscInt), &ibuf)); in GmshReadElements_v41()
1051 PetscCall(GmshReadPetscInt(gmsh, ibuf, (1 + numNodes) * numBlockElements)); in GmshReadElements_v41()
1081 static PetscErrorCode GmshReadPeriodic_v41(GmshFile *gmsh, PetscInt periodicMap[]) in GmshReadPeriodic_v41() argument
1086 PetscInt *nodeMap = gmsh->nodeMap, *nodeTags = NULL; in GmshReadPeriodic_v41()
1089 PetscCall(GmshReadPetscCount(gmsh, &numPeriodicLinks, 1)); in GmshReadPeriodic_v41()
1091 PetscCall(GmshReadInt(gmsh, info, 3)); in GmshReadPeriodic_v41()
1092 PetscCall(GmshReadPetscCount(gmsh, &numAffine, 1)); in GmshReadPeriodic_v41()
1093 PetscCall(GmshReadDouble(gmsh, dbuf, numAffine)); in GmshReadPeriodic_v41()
1094 PetscCall(GmshReadPetscCount(gmsh, &numCorrespondingNodes, 1)); in GmshReadPeriodic_v41()
1095 PetscCall(GmshBufferGet(gmsh, numCorrespondingNodes, sizeof(PetscInt), &nodeTags)); in GmshReadPeriodic_v41()
1096 PetscCall(GmshReadPetscInt(gmsh, nodeTags, numCorrespondingNodes * 2)); in GmshReadPeriodic_v41()
1115 static PetscErrorCode GmshReadMeshFormat(GmshFile *gmsh) in GmshReadMeshFormat() argument
1122 PetscCall(GmshReadString(gmsh, line, 3)); in GmshReadMeshFormat()
1129 …PetscCheck(!gmsh->binary || fileType, PETSC_COMM_SELF, PETSC_ERR_ARG_INCOMP, "Viewer is binary but… in GmshReadMeshFormat()
1130 …PetscCheck(gmsh->binary || !fileType, PETSC_COMM_SELF, PETSC_ERR_ARG_INCOMP, "Viewer is ASCII but … in GmshReadMeshFormat()
1133 gmsh->fileFormat = fileFormat; in GmshReadMeshFormat()
1134 gmsh->dataSize = dataSize; in GmshReadMeshFormat()
1135 gmsh->byteSwap = PETSC_FALSE; in GmshReadMeshFormat()
1136 if (gmsh->binary) { in GmshReadMeshFormat()
1137 PetscCall(GmshReadInt(gmsh, &checkEndian, 1)); in GmshReadMeshFormat()
1141 gmsh->byteSwap = PETSC_TRUE; in GmshReadMeshFormat()
1154 static PetscErrorCode GmshReadMeshVersion(GmshFile *gmsh) in GmshReadMeshVersion() argument
1160 PetscCall(GmshReadString(gmsh, line, 1)); in GmshReadMeshVersion()
1173 static PetscErrorCode GmshReadMeshDomain(GmshFile *gmsh) in GmshReadMeshDomain() argument
1178 PetscCall(GmshReadString(gmsh, line, 1)); in GmshReadMeshDomain()
1189 static PetscErrorCode GmshReadPhysicalNames(GmshFile *gmsh, GmshMesh *mesh) in GmshReadPhysicalNames() argument
1195 PetscCall(GmshReadString(gmsh, line, 1)); in GmshReadPhysicalNames()
1201 PetscCall(GmshReadString(gmsh, line, 2)); in GmshReadPhysicalNames()
1204 PetscCall(GmshReadString(gmsh, line, -(PetscInt)sizeof(line))); in GmshReadPhysicalNames()
1219 static PetscErrorCode GmshReadEntities(GmshFile *gmsh, GmshMesh *mesh) in GmshReadEntities() argument
1222 switch (gmsh->fileFormat) { in GmshReadEntities()
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
1236 switch (gmsh->fileFormat) { in GmshReadNodes()
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()
1257 gmsh->nodeStart = tagMin; in GmshReadNodes()
1258 gmsh->nodeEnd = tagMax + 1; in GmshReadNodes()
1265 PetscCall(PetscMalloc1(gmsh->nodeEnd - gmsh->nodeStart, &gmsh->nbuf)); in GmshReadNodes()
1266 for (t = 0; t < gmsh->nodeEnd - gmsh->nodeStart; ++t) gmsh->nbuf[t] = PETSC_INT_MIN; in GmshReadNodes()
1267 gmsh->nodeMap = gmsh->nbuf - gmsh->nodeStart; in GmshReadNodes()
1270 …PetscCheck(gmsh->nodeMap[tag] < 0, PETSC_COMM_SELF, PETSC_ERR_FILE_UNEXPECTED, "Repeated node tag … in GmshReadNodes()
1271 gmsh->nodeMap[tag] = n; in GmshReadNodes()
1277 static PetscErrorCode GmshReadElements(GmshFile *gmsh, GmshMesh *mesh) in GmshReadElements() argument
1280 switch (gmsh->fileFormat) { in GmshReadElements()
1282 PetscCall(GmshReadElements_v41(gmsh, mesh)); in GmshReadElements()
1285 PetscCall(GmshReadElements_v40(gmsh, mesh)); in GmshReadElements()
1288 PetscCall(GmshReadElements_v22(gmsh, mesh)); in GmshReadElements()
1349 static PetscErrorCode GmshReadPeriodic(GmshFile *gmsh, GmshMesh *mesh) in GmshReadPeriodic() argument
1356 switch (gmsh->fileFormat) { in GmshReadPeriodic()
1358 PetscCall(GmshReadPeriodic_v41(gmsh, mesh->periodMap)); in GmshReadPeriodic()
1361 PetscCall(GmshReadPeriodic_v40(gmsh, mesh->periodMap)); in GmshReadPeriodic()
1500 GmshFile gmsh[1]; in DMPlexCreateGmshFromFile() local
1506 PetscCall(PetscArrayzero(gmsh, 1)); in DMPlexCreateGmshFromFile()
1507 PetscCall(PetscViewerCreate(PETSC_COMM_SELF, &gmsh->viewer)); in DMPlexCreateGmshFromFile()
1508 PetscCall(PetscViewerSetType(gmsh->viewer, PETSCVIEWERASCII)); in DMPlexCreateGmshFromFile()
1509 PetscCall(PetscViewerFileSetMode(gmsh->viewer, FILE_MODE_READ)); in DMPlexCreateGmshFromFile()
1510 PetscCall(PetscViewerFileSetName(gmsh->viewer, filename)); in DMPlexCreateGmshFromFile()
1512 PetscCall(GmshReadSection(gmsh, line)); in DMPlexCreateGmshFromFile()
1513 PetscCall(GmshExpect(gmsh, "$MeshFormat", line)); in DMPlexCreateGmshFromFile()
1514 PetscCall(GmshReadString(gmsh, line, 2)); in DMPlexCreateGmshFromFile()
1521 PetscCall(PetscViewerDestroy(&gmsh->viewer)); in DMPlexCreateGmshFromFile()
1623 GmshFile gmsh[1]; in DMPlexCreateGmsh() local
1627 PetscCall(PetscArrayzero(gmsh, 1)); in DMPlexCreateGmsh()
1628 gmsh->viewer = viewer; in DMPlexCreateGmsh()
1629 gmsh->binary = binary; in DMPlexCreateGmsh()
1634 PetscCall(GmshReadSection(gmsh, line)); in DMPlexCreateGmsh()
1635 PetscCall(GmshExpect(gmsh, "$MeshFormat", line)); in DMPlexCreateGmsh()
1636 PetscCall(GmshReadMeshFormat(gmsh)); in DMPlexCreateGmsh()
1637 PetscCall(GmshReadEndSection(gmsh, "$EndMeshFormat", line)); in DMPlexCreateGmsh()
1640 PetscCall(GmshReadSection(gmsh, line)); in DMPlexCreateGmsh()
1641 PetscCall(GmshMatch(gmsh, "$MeshVersion", line, &match)); in DMPlexCreateGmsh()
1643 PetscCall(GmshExpect(gmsh, "$MeshVersion", line)); in DMPlexCreateGmsh()
1644 PetscCall(GmshReadMeshVersion(gmsh)); in DMPlexCreateGmsh()
1645 PetscCall(GmshReadEndSection(gmsh, "$EndMeshVersion", line)); in DMPlexCreateGmsh()
1647 PetscCall(GmshReadSection(gmsh, line)); in DMPlexCreateGmsh()
1651 PetscCall(GmshMatch(gmsh, "$Domain", line, &match)); in DMPlexCreateGmsh()
1653 PetscCall(GmshExpect(gmsh, "$Domain", line)); in DMPlexCreateGmsh()
1654 PetscCall(GmshReadMeshDomain(gmsh)); in DMPlexCreateGmsh()
1655 PetscCall(GmshReadEndSection(gmsh, "$EndDomain", line)); in DMPlexCreateGmsh()
1657 PetscCall(GmshReadSection(gmsh, line)); in DMPlexCreateGmsh()
1661 PetscCall(GmshMatch(gmsh, "$PhysicalNames", line, &match)); in DMPlexCreateGmsh()
1663 PetscCall(GmshExpect(gmsh, "$PhysicalNames", line)); in DMPlexCreateGmsh()
1664 PetscCall(GmshReadPhysicalNames(gmsh, mesh)); in DMPlexCreateGmsh()
1665 PetscCall(GmshReadEndSection(gmsh, "$EndPhysicalNames", line)); in DMPlexCreateGmsh()
1667 PetscCall(GmshReadSection(gmsh, line)); in DMPlexCreateGmsh()
1671 if (gmsh->fileFormat >= 40) { in DMPlexCreateGmsh()
1672 PetscCall(GmshMatch(gmsh, "$Entities", line, &match)); in DMPlexCreateGmsh()
1674 PetscCall(GmshExpect(gmsh, "$Entities", line)); in DMPlexCreateGmsh()
1675 PetscCall(GmshReadEntities(gmsh, mesh)); in DMPlexCreateGmsh()
1676 PetscCall(GmshReadEndSection(gmsh, "$EndEntities", line)); in DMPlexCreateGmsh()
1678 PetscCall(GmshReadSection(gmsh, line)); in DMPlexCreateGmsh()
1683 PetscCall(GmshExpect(gmsh, "$Nodes", line)); in DMPlexCreateGmsh()
1684 PetscCall(GmshReadNodes(gmsh, mesh)); in DMPlexCreateGmsh()
1685 PetscCall(GmshReadEndSection(gmsh, "$EndNodes", line)); in DMPlexCreateGmsh()
1688 PetscCall(GmshReadSection(gmsh, line)); in DMPlexCreateGmsh()
1689 PetscCall(GmshExpect(gmsh, "$Elements", line)); in DMPlexCreateGmsh()
1690 PetscCall(GmshReadElements(gmsh, mesh)); in DMPlexCreateGmsh()
1691 PetscCall(GmshReadEndSection(gmsh, "$EndElements", line)); in DMPlexCreateGmsh()
1695 PetscCall(GmshReadSection(gmsh, line)); in DMPlexCreateGmsh()
1696 PetscCall(GmshMatch(gmsh, "$Periodic", line, &periodic)); in DMPlexCreateGmsh()
1699 PetscCall(GmshExpect(gmsh, "$Periodic", line)); in DMPlexCreateGmsh()
1700 PetscCall(GmshReadPeriodic(gmsh, mesh)); in DMPlexCreateGmsh()
1701 PetscCall(GmshReadEndSection(gmsh, "$EndPeriodic", line)); in DMPlexCreateGmsh()
1704 PetscCall(PetscFree(gmsh->wbuf)); in DMPlexCreateGmsh()
1705 PetscCall(PetscFree(gmsh->sbuf)); in DMPlexCreateGmsh()
1706 PetscCall(PetscFree(gmsh->nbuf)); in DMPlexCreateGmsh()