CustomLib also allows to enter square matrices of order n automatically. The Matrix Editor window is opened by locating in the data tree the field to modify, and choosing the edit button (e.g. [x]) as follows,

This will open the Matrix Editor window and load the current expression into it, which can be empty.

The <value/> node field in the .spd file is the following:

<value n="nu" pn="nu" function="matrix_func,scalar" dimension_function="3" state="normal" symmetric_function="0" has_diag="0" components_function="x,y,z" v="0.3" function_func="loads_function" help="Poisson coefficient"/>

The <value/> node field in the .spd file is the following:

<value n="nu_s" pn="nu" function="matrix_func,scalar" dimension_function="3" state="normal" symmetric_function="1" has_diag="1" components_function="a,b,c" v="0.3" help="Poisson coefficient"/>

The parameters are as follows,

  • dimension_function: Determine the dimensions of a the given square matrix.
  • symmetric_function: It is a boolean value as a 1 or 0. It allows to indicate that it is given only the upper triangular part of a symmetric matrix.
  • components_function: List of numbers or names. The natural way to refer to rows and columns in a matrix is via the row and column numbers. However, the user can also give names to these entities.
  • has_diag: It is a boolean value as a 1 or 0, that allows to indicate if it is a diagonal matrix.

<proc n="loads_function" args="">

return [cmas2d_CustomLIB::chk_loads_function $domNode]

</proc>

proc cmas2d_CustomLIB::chk_loads_function { domNode } {

set loads [list [list scalar]]

lappend loads [list interpolator_func x x T]

return [join $loads ,]

}