nodesets['nodesTopRightCorner'][mesh.nodesTopRightCorner()] = 1 # add DOF-numbers after eliminating periodicity nodesets['dofsPeriodic'] = mesh.dofsPeriodic()[:, 0] # filename of the HDF5-file fname = 'paraview_nodesets.hdf5' # write HDF-file containing the data with h5py.File(fname, 'w') as data: data.file['coor'] = mesh.coor() data.file['conn'] = mesh.conn() for key, value in nodesets.items(): data[key] = value # write XDMF-file with metadata xdmf = pv.Mesh( pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ) for key, value in nodesets.items(): xdmf.push_back( pv.Attribute(fname, "/" + key, key, pv.AttributeType.Node, value.shape)) xdmf.write(os.path.splitext(fname)[0] + '.xdmf')
import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Hex8.Regular(6, 8, 12) # filename of the HDF5-file fname = 'paraview.hdf5' # write HDF-file containing the data with h5py.File(fname, 'w') as data: data['coor'] = mesh.coor() data['conn'] = mesh.conn() # write XDMF-file with metadata pv.Mesh( pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ).write(os.path.splitext(fname)[0] + '.xdmf')
coor = mesh.coor(); conn = mesh.conn(); disp = np.zeros(coor.shape) # vector definition: # provides methods to switch between dofval/nodeval/elemvec, or to manipulate a part of them vector = gf.Vector(conn, mesh.dofs()) # FEM quadrature elem = gf.Element.Quad4.Quadrature(vector.AsElement(coor)) # open output file data = h5py.File("output.h5", "w") # initialise ParaView metadata xdmf = pv.TimeSeries() # save mesh to output file data["/coor"] = coor data["/conn"] = conn # define strain history gamma = np.linspace(0, 1, 100); # loop over increments for inc in range(len(gamma)): # apply fictitious strain for node in range(disp.shape[0]): disp[node,0] = gamma[inc] * (coor[node,1] - coor[0,1])
# create mesh object mesh = gf.Mesh.Quad4.FineLayer(9,17) # filename of the HDF5-file fname = 'paraview.hdf5' # define element set elementsMiddleLayer = np.zeros((mesh.nelem()),dtype='int') elementsMiddleLayer[mesh.elementsMiddleLayer()] = 1 # write HDF-file containing the data with h5py.File(fname, 'w') as data: data['coor'] = mesh.coor() data['conn'] = mesh.conn() data['elementsMiddleLayer'] = elementsMiddleLayer # write XDMF-file with metadata xdmf = pv.Mesh( pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ) xdmf.push_back(pv.Attribute( fname, "/elementsMiddleLayer", "elementsMiddleLayer", pv.AttributeType.Cell, elementsMiddleLayer.shape)) xdmf.write(os.path.splitext(fname)[0] + '.xdmf')