Finite element matrix assembler Example: >>> mesh = pymesh.generate_icosphere(1.0, np.zeros(3), 3) >>> assembler = pymesh.Assembler(mesh) >>> L = assembler.assemble("laplacian") >>> type(L) This example assembles the Laplacian-Bel
| 4 | from .material import Material |
| 5 | |
| 6 | class Assembler: |
| 7 | """ Finite element matrix assembler |
| 8 | |
| 9 | Example: |
| 10 | |
| 11 | >>> mesh = pymesh.generate_icosphere(1.0, np.zeros(3), 3) |
| 12 | >>> assembler = pymesh.Assembler(mesh) |
| 13 | >>> L = assembler.assemble("laplacian") |
| 14 | >>> type(L) |
| 15 | <class 'scipy.sparse.csc.csc_matrix'> |
| 16 | |
| 17 | This example assembles the Laplacian-Beltrami matrix used by many graphics |
| 18 | applications. Other types of finite element matrices include: |
| 19 | |
| 20 | * ``stiffness`` |
| 21 | * ``mass`` |
| 22 | * ``lumped_mass`` |
| 23 | * ``laplacian`` |
| 24 | * ``displacement_strain`` |
| 25 | * ``elasticity_tensor`` |
| 26 | * ``engineer_strain_stress`` |
| 27 | * ``rigid_motion`` |
| 28 | * ``gradient`` |
| 29 | * ``graph_laplacian`` |
| 30 | """ |
| 31 | def __init__(self, mesh, material=None): |
| 32 | if material is None: |
| 33 | # Using dummy material. |
| 34 | material = Material.create_isotropic(mesh.dim, 1.0, 1.0, 0.0) |
| 35 | self.__mesh = mesh |
| 36 | self.__material = material |
| 37 | self.__raw_assembler = PyMesh.FEAssembler.create( |
| 38 | mesh.raw_mesh, material.raw_material) |
| 39 | |
| 40 | def assemble(self, matrix_name): |
| 41 | return self.__raw_assembler.assemble(matrix_name) |
| 42 | |
| 43 | @property |
| 44 | def material(self): |
| 45 | return self.__material |
| 46 | |
| 47 | @material.setter |
| 48 | def material(self, material): |
| 49 | self.__material = material |
| 50 | self.__raw_assembler.set_material(material.raw_material) |
| 51 | |
| 52 | @property |
| 53 | def mesh(self): |
| 54 | return self.__mesh |
no outgoing calls