MATRIX_READ

ModelingInputs a user-defined marker element.

Use

<Reference_Matrix
     id                  = "301001"
     usrsub_param_string = "USER(502,300,100,20,10,1)"
     usrsub_dll_name     = "NULL"
     usrsub_fnc_name     = "MATRIX_READ"
  />

Format

Fortran Calling Syntax
SUBROUTINE MATRIX_READ (ID, PAR, NPAR, ERRFLG)
C/C++ Calling Syntax
void  STDCALL  MATRIX_READ (int *id, double *par, int *npar, int *errflg)
Python Calling Syntax
def MATRIX_READ(id, par, npar):
    return errflg
MATLAB Calling Syntax
function eflg = MATRIX_READ(id, par, npar)

Attributes

ID
[integer]
The matrix element identifier.
PAR
[double precision]
An array that contains the constant arguments from the list provided in the user-defined statement.
NPAR
[integer]
The number of entries in the PAR array.
ERRFLAG
[integer]
The initialization flag.

Example

def MATRIX_READ(id, par, npar):
    eflg = 0
    n = par[0].__int__()
    radius = par[1]
    b_id = int(par[2])
    ne = 3*(n+1);
    rowidx = ne*[0]
    colidx = [0 for i in range(ne)]
    value = range(ne)
    
    u = -2.0*pi
    du = 4.0*pi/n
    icount = 0

    for i in xrange(n+1):
        x = radius*(1.0+cos(u))/2.0
        y = radius*sin(u)/2.0
        z = radius*sin(u/2.0)

        rowidx[icount] = i+1
        colidx[icount] = 1
        value[icount] = x
        icount+=1
        rowidx[icount] = i+1
        colidx[icount] = 2
        value[icount] = y
        icount+=1
        rowidx[icount] = i+1
        colidx[icount] = 3
        value[icount] = z
        icount+=1
        u += du
    eflg = py_put_matrix(id, n+1, 3, rowidx, colidx, value)
    return eflg

Comments

  1. MATRIX_READ can only be defined in a Reference_Matrix element. The ID of the Reference_Matrix, defined with MATRIX_READ, may be referenced as the matrix_id in the Reference_ParamCurve element. For example:
    <Reference_ParamCurve
         id                 = "301001"
         is_u_closed         = "TRUE"
         is_curve_points     = "TRUE"
         matrix_id           = "301001"
    />