Skip to content

Duplicate evaluation in material classes in gsThinShellAssembler #28

@hverhelst

Description

@hverhelst

Problem

Inside the gsThinShellAssembler we use the gsExprAssembler. The material evaluations are moved into the gsExprAssembler by lines like:

    gsMaterialMatrixIntegrate<T,MaterialOutput::MatrixA> m_mmA(m_materialMatrices,&m_patches,&defpatches);
    gsMaterialMatrixIntegrate<T,MaterialOutput::MatrixB> m_mmB(m_materialMatrices,&m_patches,&defpatches);
    gsMaterialMatrixIntegrate<T,MaterialOutput::MatrixC> m_mmC(m_materialMatrices,&m_patches,&defpatches);
    gsMaterialMatrixIntegrate<T,MaterialOutput::MatrixD> m_mmD(m_materialMatrices,&m_patches,&defpatches);
    auto mmA = m_assembler.getCoeff(m_mmA);
    auto mmB = m_assembler.getCoeff(m_mmB);
    auto mmC = m_assembler.getCoeff(m_mmC);
    auto mmD = m_assembler.getCoeff(m_mmD);

However, when inside an assembly call we use m_mmA and m_mmB, they both call pre-computation of the same geometric quantities (see gsMaterialMatrixBaseDim.hpp.

Solution

It would be more optimal to perform the geometric computations only once, preferably delegated by the gsExprAssembler and the parse functions in the expressions.
We can do this by making expression objects for gsMaterialMatrixIntegrate and gsMaterialMatrixEval.

(example follows...)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions