pyfem.elements.set_element_field_variables 源代码

# -*- coding: utf-8 -*-
"""

"""
import numpy as np


[文档] def set_element_field_variables(qp_field_variables: dict[str, np.ndarray], iso_element_shape, dimension: int, nodes_number: int) -> dict[str, np.ndarray]: """ """ method = '' element_nodal_values = {} for key, item in qp_field_variables.items(): if iso_element_shape.extrapolated_matrix.shape != (0,) and method == 'extrapolated': if len(item.shape) == 1: element_nodal_values[key] = np.dot(iso_element_shape.extrapolated_matrix, item.reshape(-1, 1)) else: element_nodal_values[key] = np.dot(iso_element_shape.extrapolated_matrix, item) else: if len(item.shape) == 1: tile_shape = (nodes_number, 1) elif len(item.shape) == 2: tile_shape = (nodes_number, 1) elif len(item.shape) == 3: tile_shape = (nodes_number, 1, 1) else: raise ValueError('The shape of field variable is not correct.') element_nodal_values[key] = np.tile(np.average(item, axis=0), tile_shape) element_nodal_field_variables = {} for key, item in element_nodal_values.items(): if key == 'stress': if dimension == 2: element_nodal_field_variables['S11'] = item[:, 0] element_nodal_field_variables['S22'] = item[:, 1] element_nodal_field_variables['S12'] = item[:, 2] elif dimension == 3: element_nodal_field_variables['S11'] = item[:, 0] element_nodal_field_variables['S22'] = item[:, 1] element_nodal_field_variables['S33'] = item[:, 2] element_nodal_field_variables['S12'] = item[:, 3] element_nodal_field_variables['S13'] = item[:, 4] element_nodal_field_variables['S23'] = item[:, 5] element_nodal_field_variables['S'] = item if key == 'strain': if dimension == 2: element_nodal_field_variables['E11'] = item[:, 0] element_nodal_field_variables['E22'] = item[:, 1] element_nodal_field_variables['E12'] = item[:, 2] elif dimension == 3: element_nodal_field_variables['E11'] = item[:, 0] element_nodal_field_variables['E22'] = item[:, 1] element_nodal_field_variables['E33'] = item[:, 2] element_nodal_field_variables['E12'] = item[:, 3] element_nodal_field_variables['E13'] = item[:, 4] element_nodal_field_variables['E23'] = item[:, 5] element_nodal_field_variables['E'] = item if key == 'energy': element_nodal_field_variables['Energy'] = item[:, 0] if key == 'heat_flux': if dimension >= 1: element_nodal_field_variables['HFL1'] = item[:, 0] if dimension >= 2: element_nodal_field_variables['HFL2'] = item[:, 1] if dimension >= 3: element_nodal_field_variables['HFL3'] = item[:, 2] element_nodal_field_variables['HFL'] = item if key == 'concentration_flux': if dimension >= 1: element_nodal_field_variables['CFL1'] = item[:, 0] if dimension >= 2: element_nodal_field_variables['CFL2'] = item[:, 1] if dimension >= 3: element_nodal_field_variables['CFL3'] = item[:, 2] element_nodal_field_variables['CFL'] = item if 'SDV' in key: element_nodal_field_variables[key] = item return element_nodal_field_variables
if __name__ == "__main__": pass