vhandle.matrix
Purpose
Class constructor for matrix handle objects.
vhandle.matrix
The SDT supports handle objects, which act as pointers to variables various matrix forms that are optimized for storage.
vhandle.matrix are a child class of the MATLAB handle and thus behave accordingly. In particular there is a single instance (b=a does not generate a copy of a).
-
vhandle.matrix.formNum lists currently implemented matrix forms.
- MKLS and MKLSt are sparse or full and transposed sparse or full matrices stored for use with MKL. The inspector/executor routines of recent MKL are used to give better parallel implementation for matrix vector products. This is useful for time domain implementations of implicit and explicit algorithms.
- MKLST.activeRow and MKLS.activeCol are used to predefine data associated with moving contacts. Initialization is supported with the contact token.
- ZMatrix is used to support on the fly matrix assembly in zcoef calls. This is currently used for frequency domain formulations of perfectly matched layers in p_pml.
- MBBryan multibody observation using Bryan angles. From the initial vector an active DOF vector is extracted using .iadof indices and assumed to start with 3 translations and 3 rotations leading to the Bryan rotation matrix
RBody=cos rz−sin rzsin rzcos rz1
cos rysin ry1−sin rycos ry
1cos rx−sin rxsin rxcos rx
(10.71) |
and be followed by NR generalized amplitudes (thus .iadof is of length 6+NR and associated with a reduction basis .def or dimensions 3 NBody × NR. The node position field X(t) in the body coordinate system is thus given by
{XBody(t)}3× Np={xBody}+[T]{qR(t)}
(10.72) |
where the three position coordinates of a given node are stored consecutively and the initial positions in the body frame x are stored as field .p. The global position is then obtained by translating and rotating the positions in the the body frame
{XGlobal(t)}3× Np={uBody(t)} + [RBody(t)] {XBody(t)}
(10.73) |
Finally XGlobal may be placed in a different order using the .idof renumbering field u(idof)=XGlobal.
When requiring displacement rather than position (when .isPos=0), the result is {XGlobal(t)}−{xGlobal(RBody=I)}.
Handling of rotations in the global frame is not currently handled.
- Compound is an heterogenous block matrix object. It aims at generating matrices such as restitution bases that are combined in multilayer or multi components. Two types of representations are supported
-
Compound.cat(1) concatenated blocks blocks form the matrix.
- Compound.seq(2) sequential product blocks. The compound item is a row series of matrices whose product would produce the numeric matrix.
- Restit is the beginning of reimplementation of fesuper('sedef') products. The operator iterates on a vector of vhandle.matrix objects using the matrix multiplication and addition ci=ci−1+Ai*b (gemm method). For full matrix restitution, one will often need use a FullBlock.
- FullBlock implements c(iout,:)=c(iout,:)+A*b(iin,:).
mtimes
Implements overloading the base Matlab matrix multiplication operator.
gemm
Implements matrix matrix/vector multiplication and add c=A.gemm(b,c,coef) performs c:=coef(1)A*b+coef(2)*c. The interest is mostly due to the optimized implementation in the mkl_utils mex file where improved BLAS operations are possible. A.gemm(b,c,coef) performs in place modification of the c matrix.
©1991-2024 by SDTools