FUNCTION number_of_terms
(node_dof_list : LIST [1:?] OF LIST [1:?] OF degree_of_freedom, matrix_type : matrix_symmetry) : INTEGER;
LOCAL num_terms : INTEGER; number_of_freedoms : INTEGER; END_LOCAL;
number_of_freedoms := 0; (* loop FOR each item IN the outer list*)
REPEAT i := 1 TO SIZEOF (node_dof_list); (* find size OF inner list*) number_of_freedoms := number_of_freedoms + SIZEOF (node_dof_list[i]); END_REPEAT;
IF (matrix_type = symmetric) THEN num_terms := (number_of_freedoms * (number_of_freedoms+1)) DIV 2; END_IF;
IF (matrix_type = diagonal) THEN num_terms := number_of_freedoms; END_IF;
RETURN (num_terms); END_FUNCTION; -- number_of_terms
|