void ScalarFiniteElement<D> :: CalcMappedDShape (const MappedIntegrationPoint<D,D> & mip, SliceMatrix<> dshape) const { CalcDShape (mip.IP(), dshape); for (int i = 0; i < dshape.Height(); i++) { Vec<D> hv = dshape.Row(i); FlatVec<D> (&dshape(i,0)) = Trans (mip.GetJacobianInverse ()) * hv; } }
void ScalarFiniteElement<D> :: CalcMappedDShape (const MappedIntegrationRule<D,D> & mir, SliceMatrix<> dshapes) const { for (int i = 0; i < mir.Size(); i++) CalcMappedDShape (mir[i], dshapes.Cols(i*D,(i+1)*D)); }
void ScalarFiniteElement<D> :: CalcShape (const IntegrationRule & ir, SliceMatrix<> shape) const { for (int i = 0; i < ir.Size(); i++) CalcShape (ir[i], shape.Col(i)); }
inline void MultMatMat (SliceMatrix<> a, SliceMatrix<SIMD<double>> b, SliceMatrix<SIMD<double>> c) { MultMatMat_intern (a.Height(), a.Width(), b.Width(), a, b, c); }