def find_or_create_field_stored_mesh_location(fieldmodule: Fieldmodule, mesh: Mesh, name=None, managed=True)\ -> FieldStoredMeshLocation: """ Get or create a stored mesh location field for storing locations in the supplied mesh, used for storing data projections. Note can't currently verify existing field stores locations in the supplied mesh. New field is managed by default. :param fieldmodule: Zinc fieldmodule to find or create field in. :param mesh: Mesh to store locations in, from same fieldmodule. :param name: Name of new field. If not defined, defaults to "location_" + mesh.getName(). :param managed: Managed state of field if created here. """ if not name: name = "location_" + mesh.getName() field = fieldmodule.findFieldByName(name) # StoredMeshLocation field can only have 1 component; its value is an element + xi coordinates if field_exists(fieldmodule, name, 'StoredMeshLocation', 1): mesh_location_field = field.castStoredMeshLocation() return mesh_location_field return create_field_stored_mesh_location(fieldmodule, mesh, name=name, managed=managed)
def create_field_stored_mesh_location(fieldmodule: Fieldmodule, mesh: Mesh, name=None, managed=False)\ -> FieldStoredMeshLocation: """ Create a stored mesh location field for storing locations in the supplied mesh, used for storing data projections. New field is not managed by default. :param fieldmodule: Zinc fieldmodule to find or create field in. :param mesh: Mesh to store locations in, from same fieldmodule. :param name: Name of new field. If not defined, defaults to "location_" + mesh.getName(). :param managed: Managed state of field. :return: Zinc FieldStoredMeshLocation """ if not name: name = "location_" + mesh.getName() with ChangeManager(fieldmodule): mesh_location_field = fieldmodule.createFieldStoredMeshLocation(mesh) mesh_location_field.setName(name) mesh_location_field.setManaged(managed) return mesh_location_field