f_sub = r'C:\path\to\file.sub'
ds = dpf.DataSources(f_sub)
sub = dpf.Operator('cms_matrices_provider') # operator instantiation
sub.inputs.data_sources.connect(ds)
sub_fields = sub.outputs.fields_container()
for field in sub_fields : print(field)
There seems to be only three fields: stiffnes_matrix, mass_matrix and load vector.
In order to use these matrices, additional information is needed.
With APDL Math, we used to retrieve:
the DST table
tne number of dofs per node (numdof)
the number of normal modes (nmodes)
the number of virtual nodes that contain modal coordinate (nvnodes).
The DST table is used to know to which couple (node, dof) corresponds each row of the matrices, often called matrix indexation table. Without that indexation table, usage if mass and stiffness matrices are very limited.
DST is calculated with the following rule: DST = (NODE-1)*numdof+DOF
I'm not sure if the best is to :
give the user DST and numdof, and let the user calculate associated node and dof
give the user a higher level function, which return directly the arrays (node, dof)
I've tried the following code:
There seems to be only three fields: stiffnes_matrix, mass_matrix and load vector.
In order to use these matrices, additional information is needed. With APDL Math, we used to retrieve:
The DST table is used to know to which couple (node, dof) corresponds each row of the matrices, often called matrix indexation table. Without that indexation table, usage if mass and stiffness matrices are very limited.
DST is calculated with the following rule: DST = (NODE-1)*numdof+DOF I'm not sure if the best is to :