diff --git a/src/gsLinearMaterial.h b/src/gsLinearMaterial.h index 569571d..7c8bb22 100644 --- a/src/gsLinearMaterial.h +++ b/src/gsLinearMaterial.h @@ -67,6 +67,7 @@ class gsLinearMaterial : public gsMaterialBase this->setParameter(1,nu); } + using Base::eval_stress_into; /// See \ref gsMaterialBase.h for more details void eval_stress_into(const gsMaterialData & data, gsMatrix & Sresult) const { @@ -76,24 +77,22 @@ class gsLinearMaterial : public gsMaterialBase // Resize the result Sresult.resize(dim*dim,N); - // Lamé parameters - T E, nu; - T lambda, mu; gsMatrix I = gsMatrix::Identity(dim,dim); - + // Lamé parameters + gsMatrix lambda(1,N), mu(1,N); + gsMatrix E = data.m_pars[0]; + gsMatrix nu = data.m_pars[1]; + lambda.array() = E.array() * nu.array() / ( ( 1. + nu.array() ) * ( 1. - 2. * nu.array() ) ); + mu.array() = E.array() / ( 2. * ( 1. + nu.array() ) ); for (index_t i=0; i!=N; i++) { - E = data.m_parmat(0,i); - nu= data.m_parmat(1,i); - lambda = E * nu / ( ( 1. + nu ) * ( 1. - 2. * nu ) ); - mu = E / ( 2. * ( 1. + nu ) ); - gsAsMatrix Emat = data.m_E.reshapeCol(i,dim,dim); gsAsMatrix S = Sresult.reshapeCol(i,dim,dim); - S = lambda*Emat.trace()*I + 2*mu*Emat; + S = lambda(0,i)*Emat.trace()*I + 2*mu(0,i)*Emat; } } + using Base::eval_matrix_into; /// See \ref gsMaterialBase.h for more details void eval_matrix_into(const gsMaterialData & data, gsMatrix & Cresult) const { @@ -115,16 +114,15 @@ class gsLinearMaterial : public gsMaterialBase symmetricIdentityTensor(Cmu,I); // Lamé parameters - T E, nu; - T lambda, mu; + gsMatrix lambda(1,N), mu(1,N); + gsMatrix E = data.m_pars[0]; + gsMatrix nu = data.m_pars[1]; + lambda.array() = E.array() * nu.array() / ( ( 1. + nu.array() ) * ( 1. - 2. * nu.array() ) ); + mu.array() = E.array() / ( 2. * ( 1. + nu.array() ) ); for (index_t i=0; i!=N; i++) { - E = data.m_parmat(0,i); - nu= data.m_parmat(1,i); - lambda = E * nu / ( ( 1. + nu ) * ( 1. - 2. * nu ) ); - mu = E / ( 2. * ( 1. + nu ) ); // Compute C - Cresult.reshapeCol(i,sz,sz) = lambda*Clambda + mu*Cmu; + Cresult.reshapeCol(i,sz,sz) = lambda(0,i)*Clambda + mu(0,i)*Cmu; } } diff --git a/src/gsMaterialBase.h b/src/gsMaterialBase.h index 1fca860..3fc4b99 100644 --- a/src/gsMaterialBase.h +++ b/src/gsMaterialBase.h @@ -280,7 +280,7 @@ class gsMaterialBase this->eval_stress_into(data,Sresult); } - virtual void eval_stress_into(const gsMaterialData & data, gsMatrix & Sresult) const + virtual void eval_stress_into(const gsMaterialData & /* data */, gsMatrix & /* Sresult */) const { GISMO_NO_IMPLEMENTATION; } /** @@ -305,7 +305,7 @@ class gsMaterialBase this->eval_matrix_into(data,Cresult); } - virtual void eval_matrix_into(const gsMaterialData & data, gsMatrix & Cresult) const + virtual void eval_matrix_into(const gsMaterialData & /* data */, gsMatrix & /* Cresult */) const { GISMO_NO_IMPLEMENTATION; } /** @@ -330,7 +330,7 @@ class gsMaterialBase this->eval_matrix_pos_into(data,Cresult); } - virtual void eval_matrix_pos_into(const gsMaterialData & data, gsMatrix & Cresult) const + virtual void eval_matrix_pos_into(const gsMaterialData & /* data */, gsMatrix & /* Cresult */) const { GISMO_NO_IMPLEMENTATION; } /** @@ -355,7 +355,7 @@ class gsMaterialBase this->eval_energy_into(data,Presult); } - virtual void eval_energy_into(const gsMaterialData & data, gsMatrix & Presult) const + virtual void eval_energy_into(const gsMaterialData & /* data */, gsMatrix & /* Presult */) const { GISMO_NO_IMPLEMENTATION; } /// Sets the density @@ -392,7 +392,7 @@ class gsMaterialBase { m_pars.resize(pars.size()); for (size_t k = 0; k!=pars.size(); k++) - m_pars[k] = std::make_pair(pars[k],true); + m_pars[k] = std::make_pair(pars[k],parametric); } /** @@ -507,9 +507,8 @@ class gsMaterialBase data.patch = (map_ori.patchId==-1) ? 0 : map_ori.patchId; data.m_F.resize(0,data.size); data.m_E.resize(0,data.size); - data.m_parmat.resize(m_pars.size(),data.size); + data.m_pars.resize(m_pars.size()); - data.m_parmat.setZero(); gsMatrix pars; for (size_t v=0; v!=m_pars.size(); v++) { @@ -517,7 +516,7 @@ class gsMaterialBase map_ori.points : map_ori.values[0], pars); - data.m_parmat.row(v) = pars; + data.m_pars[v] = pars; } } @@ -542,9 +541,8 @@ class gsMaterialBase data.patch = (map_ori.patchId==-1) ? 0 : map_ori.patchId; data.m_F.resize(data.dim*data.dim,data.size); data.m_E.resize(data.dim*data.dim,data.size); - data.m_parmat.resize(m_pars.size(),data.size); + data.m_pars.resize(m_pars.size()); - data.m_parmat.setZero(); gsMatrix pars; gsMatrix jac_ori, jac_def; gsMatrix I = gsMatrix::Identity(data.dim,data.dim); @@ -563,7 +561,7 @@ class gsMaterialBase for (size_t v=0; v!=m_pars.size(); v++) { m_pars[v].first->piece(data.patch).eval_into(map_ori.values[0], pars); - data.m_parmat.row(v) = pars; + data.m_pars[v] = pars; } } @@ -685,7 +683,7 @@ class gsMaterialData typename gsMaterialBase::function_ptr m_undeformed; typename gsMaterialBase::function_ptr m_deformed; - mutable gsMatrix m_parmat; + mutable std::vector> m_pars; mutable gsMatrix m_rhoMat; // mutable gsMatrix m_jac_ori, m_jac_def; mutable gsMatrix m_F, m_E; diff --git a/src/gsMaterialHelper.h b/src/gsMaterialHelper.h deleted file mode 100644 index fbb3b41..0000000 --- a/src/gsMaterialHelper.h +++ /dev/null @@ -1,392 +0,0 @@ -/** @file gsMaterialHelper.h - - @brief - - This file is part of the G+Smo library. - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - - Author(s): - O. Weeger (2012 - 2015, TU Kaiserslautern), - A.Shamanskiy (2016 - 2020, TU Kaiserslautern), - H.M.Verhelst (2019 - ...., TU Delft) -*/ - -#pragma once - -#include -#include -#include -#include - -namespace gismo -{ - -template -class gsMaterialData; - - -template -class gsMaterialHelper -{ -public: - - typedef typename gsFunctionSet::Ptr function_ptr; - - /// Shared pointer for gsMaterialHelper - typedef memory::shared_ptr< gsMaterialHelper > Ptr; - - /// Unique pointer for gsMaterialHelper - typedef memory::unique_ptr< gsMaterialHelper > uPtr; - - - gsMaterialHelper() - : - gsMaterialHelper(nullptr,nullptr) - { - } - - gsMaterialHelper( const gsFunctionSet * mp) - : - gsMaterialHelper(mp,nullptr) - { - } - - gsMaterialHelper( const gsFunctionSet & mp) - : - gsMaterialHelper(&mp,nullptr) - { - } - - gsMaterialHelper( const gsFunctionSet & mp, - const gsFunctionSet & mp_def) - : - gsMaterialHelper(memory::make_shared(mp.clone().release()), - memory::make_shared(mp_def.clone().release())) - { - } - - gsMaterialHelper( const gsFunctionSet * mp, - const gsFunctionSet * mp_def) - : - gsMaterialHelper(memory::make_shared_not_owned(mp), - memory::make_shared_not_owned(mp_def)) - { - } - - gsMaterialHelper( const function_ptr & mp, - const function_ptr & mp_def) - { - m_undeformed.mine() = mp; - m_deformed.mine() = mp_def; - } - - GISMO_UPTR_FUNCTION_NO_IMPLEMENTATION(gsMaterialHelper, clone) - - /// Destructor - virtual ~gsMaterialHelper() {}; - - /// Copy constructor (makes deep copy) - gsMaterialHelper( const gsMaterialHelper & other ) - { - operator=(other); - } - - /// Move constructor - gsMaterialHelper( gsMaterialHelper && other ) - { - operator=(give(other)); - } - - gsMaterialHelper & operator= ( const gsMaterialHelper & other ) - { - if (this!=&other) - { - m_undeformed.mine() = other.m_undeformed.mine(); - m_deformed.mine() = other.m_deformed.mine(); - m_options = other.m_options; - } - return *this; - } - - gsMaterialHelper & operator= ( gsMaterialHelper && other ) - { - m_undeformed.mine() = give(other.m_undeformed.mine()); - m_deformed.mine() = give(other.m_deformed.mine()); - m_options = give(other.m_options); - return *this; - } - - /** - * @brief Sets the default options - */ - virtual inline void defaultOptions() - { } - - /** - * @brief Returns the options - * - * @return \ref gsOptionList with the class options - */ - virtual inline gsOptionList & options() { return m_options; } - - /** - * @brief Returns the dimension - * - * @return The dimension - */ - virtual inline short_t dim() const - { - GISMO_ASSERT(m_undeformed.mine()!=nullptr,"Undeformed geometry is not set!"); - return m_undeformed.mine()->domainDim(); - } - - /** - * @brief Sets the options - * - * @param[in] opt \ref gsOptionList - */ - virtual inline void setOptions(gsOptionList opt) {m_options.update(opt,gsOptionList::addIfUnknown); } - - /** - * @brief Evaluates the deformation gradient at a set of given points - * - * @param[in] patch The patch - * @param[in] u The in-plane shell coordinates to be eveluated on - * - * @return - */ - virtual inline void eval_deformation_gradient_and_strain_into(const index_t patch, const gsMatrix& u, gsMatrix & Fresult, gsMatrix & Eresult) const - { - const short_t dim = u.rows(); - // Compute map and parameters - this->_computeGeometricData(patch,u); - - const index_t N = u.cols(); - gsMatrix I = gsMatrix::Identity(dim,dim); - gsMatrix physDefJac; - Fresult.resize(dim*dim,N); - Eresult.resize(dim*dim,N); - for (index_t i=0; i!=N; i++) - { - gsAsMatrix jacdef = m_data.mine().m_jac_def.reshapeCol(i,dim,dim); - gsAsMatrix jacori = m_data.mine().m_jac_ori.reshapeCol(i,dim,dim); - - physDefJac = jacdef*(jacori.cramerInverse()); - // deformation gradient F = I + du/dx - gsAsMatrix F = Fresult.reshapeCol(i,dim,dim); - F = physDefJac; - - // strain tensor E = 0.5*(F'*F-I), a.k.a. full geometric strain tensor - gsAsMatrix E = Eresult.reshapeCol(i,dim,dim); - E = 0.5 * (F.transpose() * F - I); - } - } - - /** - * @brief Evaluates the deformation gradient at a set of given points - * - * @param[in] patch The patch - * @param[in] u The in-plane shell coordinates to be eveluated on - * - * @return - */ - virtual inline void eval_deformation_gradient_into(const index_t patch, const gsMatrix& u, gsMatrix & result) const - { - const short_t dim = u.rows(); - // Compute map and parameters - this->_computeGeometricData(patch,u); - - const index_t N = u.cols(); - gsMatrix I = gsMatrix::Identity(dim,dim); - gsMatrix physDefJac; - result.resize(dim*dim,N); - for (index_t i=0; i!=N; i++) - { - gsAsMatrix jacdef = m_data.mine().m_jac_def.reshapeCol(i,dim,dim); - gsAsMatrix jacori = m_data.mine().m_jac_ori.reshapeCol(i,dim,dim); - - physDefJac = jacdef*(jacori.cramerInverse()); - // deformation gradient F = I + du/dx - gsAsMatrix F = result.reshapeCol(i,dim,dim); - - F = physDefJac; - - } - } - - - /** - * @brief Evaluates the strain tensor at a set of given points - * - * @param[in] patch The patch - * @param[in] u The in-plane shell coordinates to be eveluated on - * - * @return - */ - virtual inline void eval_strain_into(const index_t patch, const gsMatrix& u, gsMatrix & result) const - { - const short_t dim = u.rows(); - const index_t N = u.cols(); - gsMatrix Fres; - // NOTE: Could be faster to compute F here in the loop. - this->eval_deformation_gradient_into(patch,u,Fres); - gsMatrix I = gsMatrix::Identity(dim,dim); - result.resize(dim*dim,N); - - for (index_t i=0; i!=N; i++) - { - // deformation gradient F = I + du/dx - gsAsMatrix F = Fres.reshapeCol(i,dim,dim); - // Green-Lagrange strain, E = 0.5*(F'*F-I), a.k.a. full geometric strain tensor - gsAsMatrix E = result.reshapeCol(i,dim,dim); - - E = 0.5 * (F.transpose() * F - I); - // E = 0.5 * ((F-I).transpose() + (F-I)); // small strains - } - } - - /// Returns true if a density is assigned - virtual inline bool hasDensity() const { return m_density!=nullptr; } - - virtual void setUndeformed(const gsFunctionSet * undeformed) - { - function_ptr f_ptr = memory::make_shared_not_owned(undeformed); - m_undeformed.mine() = f_ptr; - } - virtual void setDeformed(const gsFunctionSet * deformed) - { - function_ptr f_ptr = memory::make_shared_not_owned(deformed); - m_deformed.mine() = f_ptr; - } - - virtual void setUndeformed(const function_ptr undeformed) - { - m_undeformed.mine() = undeformed; - } - virtual void setDeformed(const function_ptr deformed) - { - m_deformed.mine() = deformed; - } - - const function_ptr getUndeformed() const { return m_undeformed.mine(); } - const function_ptr getDeformed() const { return m_deformed.mine(); } - - virtual bool hasUndeformed() const - { return m_deformed.mine()!=nullptr; } - virtual bool hasDeformed() const { return m_deformed.mine()!=nullptr; } - - void precompute(index_t patch, const gsMatrix& u) - { - this->computeGeometricData(patch,u); - } - - const gsMaterialData & data() const{ return m_data.mine(); } - - - /** - * - */ - const gsMaterialData & getData() const{ return m_data.mine(); } - - void setData(const gsMaterialData & data) { m_data.mine() = data; } - -protected: - void _computeGeometricData(index_t patch, const gsMatrix& u) const - { - const short_t dim = u.rows(); - GISMO_ASSERT(m_undeformed.mine()!=nullptr,"Undeformed function is not set"); - GISMO_ASSERT(m_deformed.mine()!=nullptr,"Deformed function is not set"); - GISMO_ASSERT(m_undeformed.mine()->domainDim()==dim,"Geometric dimension and the point dimension are not the same!"); - GISMO_ASSERT(m_deformed.mine()->domainDim()==dim,"Geometric dimension and the point dimension are not the same!"); - m_data.mine().m_jac_ori.resize(dim*dim,u.cols()); - m_data.mine().m_jac_def.resize(dim*dim,u.cols()); - - gsMapData map_ori, map_def; - map_def.flags = map_ori.flags = NEED_JACOBIAN; - map_def.points = map_ori.points = u; - m_undeformed.mine()->function(patch).computeMap(map_ori); - m_deformed.mine()->function(patch).computeMap(map_def); - - for (index_t k=0; k!= u.cols(); k++) - { - m_data.mine().m_jac_ori.reshapeCol(k,dim,dim) = map_ori.jacobian(k); - m_data.mine().m_jac_def.reshapeCol(k,dim,dim) = map_def.jacobian(k); - } - } - - void _computeParameterData(index_t patch, const gsMatrix& u) const - { - const short_t dim = u.rows(); - GISMO_ASSERT(m_undeformed.mine()!=nullptr,"Undeformed function is not set"); - GISMO_ASSERT(m_undeformed.mine()->domainDim()==dim,"Geometric dimension and the point dimension are not the same!"); - m_data.mine().m_parmat.resize(m_pars.size(),u.cols()); - - gsMatrix tmp; - - gsMapData map; - map.flags = NEED_VALUE; - map.points = u; - static_cast&>(m_undeformed.mine()->piece(patch) ).computeMap(map); - - m_data.mine().m_parmat.resize(m_pars.size(),map.values[0].cols()); - m_data.mine().m_parmat.setZero(); - - for (size_t v=0; v!=m_pars.size(); v++) - { - m_pars[v]->piece(patch).eval_into(map.values[0], tmp); - m_data.mine().m_parmat.row(v) = tmp; - } - } - - -protected: - - void membersSetZero() - { - m_data.mine().membersSetZero(); - } - -protected: - - util::gsThreaded m_undeformed; - util::gsThreaded m_deformed; - - std::vector< function_ptr > m_pars; - function_ptr m_density; - - gsOptionList m_options; - - // Geometric data point - mutable util::gsThreaded< gsMaterialData > m_data; - -public: - -# define Eigen gsEigen - EIGEN_MAKE_ALIGNED_OPERATOR_NEW //must be present whenever the class contains fixed size matrices -# undef Eigen - -}; - -template -class gsMaterialData -{ - -public: - - void membersSetZero() - { - m_jac_ori.setZero(); - m_jac_def.setZero(); - m_rhoMat.setZero(); - } - - mutable gsMatrix m_parmat; - mutable gsMatrix m_rhoMat; - mutable gsMatrix m_jac_ori, m_jac_def; -}; - - -} diff --git a/src/gsNeoHookeLogMaterial.h b/src/gsNeoHookeLogMaterial.h index 551c3cb..9ca14a7 100644 --- a/src/gsNeoHookeLogMaterial.h +++ b/src/gsNeoHookeLogMaterial.h @@ -67,6 +67,7 @@ class gsNeoHookeLogMaterial : public gsMaterialBase this->setParameter(1,nu); } + using Base::eval_stress_into; /// See \ref gsMaterialBase.h for more details void eval_stress_into(const gsMaterialData & data, gsMatrix & Sresult) const override { @@ -77,27 +78,27 @@ class gsNeoHookeLogMaterial : public gsMaterialBase Sresult.resize(dim*dim,N); // Lamé parameters - T E, nu; - T lambda, mu; + gsMatrix lambda(1,N), mu(1,N); + gsMatrix E = data.m_pars[0]; + gsMatrix nu = data.m_pars[1]; + lambda.array() = E.array() * nu.array() / ( ( 1. + nu.array() ) * ( 1. - 2. * nu.array() ) ); + mu.array() = E.array() / ( 2. * ( 1. + nu.array() ) ); + gsMatrix I = gsMatrix::Identity(dim,dim); gsMatrix RCG, RCGinv; T J; for (index_t i=0; i!=N; i++) { - E = data.m_parmat(0,i); - nu= data.m_parmat(1,i); - lambda = E * nu / ( ( 1. + nu ) * ( 1. - 2. * nu ) ); - mu = E / ( 2. * ( 1. + nu ) ); - gsAsMatrix F = data.m_F.reshapeCol(i,dim,dim); gsAsMatrix S = Sresult.reshapeCol(i,dim,dim); J = F.determinant(); RCG = F.transpose() * F; RCGinv = RCG.cramerInverse(); - S = (lambda*log(J)-mu)*RCGinv + mu*I; + S = (lambda(0,i)*log(J)-mu(0,i))*RCGinv + mu(0,i)*I; } } + using Base::eval_matrix_into; /// See \ref gsMaterialBase.h for more details void eval_matrix_into(const gsMaterialData & data, gsMatrix & Cresult) const override { @@ -122,15 +123,13 @@ class gsNeoHookeLogMaterial : public gsMaterialBase symmetricIdentityTensor(Cmu,I); // Lamé parameters - T E, nu; - T lambda, mu; + gsMatrix lambda(1,N), mu(1,N); + gsMatrix E = data.m_pars[0]; + gsMatrix nu = data.m_pars[1]; + lambda.array() = E.array() * nu.array() / ( ( 1. + nu.array() ) * ( 1. - 2. * nu.array() ) ); + mu.array() = E.array() / ( 2. * ( 1. + nu.array() ) ); for (index_t i=0; i!=N; i++) { - E = data.m_parmat(0,i); - nu= data.m_parmat(1,i); - lambda = E * nu / ( ( 1. + nu ) * ( 1. - 2. * nu ) ); - mu = E / ( 2. * ( 1. + nu ) ); - gsAsMatrix F = data.m_F.reshapeCol(i,dim,dim); J = F.determinant(); @@ -139,9 +138,9 @@ class gsNeoHookeLogMaterial : public gsMaterialBase // Compute C matrixTraceTensor(C,RCGinv,RCGinv); - C *= lambda; + C *= lambda(0,i); symmetricIdentityTensor(Ctemp,RCGinv); - C += (mu-lambda*log(J))*Ctemp; + C += (mu(0,i)-lambda(0,i)*log(J))*Ctemp; Cresult.reshapeCol(i,sz,sz) = C; } } diff --git a/src/gsNeoHookeQuadMaterial.h b/src/gsNeoHookeQuadMaterial.h index a080018..f29e345 100644 --- a/src/gsNeoHookeQuadMaterial.h +++ b/src/gsNeoHookeQuadMaterial.h @@ -62,6 +62,7 @@ class gsNeoHookeQuadMaterial : public gsMaterialBase this->setParameter(1,nu); } + using Base::eval_stress_into; /// See \ref gsMaterialBase.h for more details void eval_stress_into(const gsMaterialData & data, gsMatrix & Sresult) const { @@ -72,27 +73,27 @@ class gsNeoHookeQuadMaterial : public gsMaterialBase Sresult.resize(dim*dim,N); // Lamé parameters - T E, nu; - T lambda, mu; + gsMatrix lambda(1,N), mu(1,N); + gsMatrix E = data.m_pars[0]; + gsMatrix nu = data.m_pars[1]; + lambda.array() = E.array() * nu.array() / ( ( 1. + nu.array() ) * ( 1. - 2. * nu.array() ) ); + mu.array() = E.array() / ( 2. * ( 1. + nu.array() ) ); + gsMatrix I = gsMatrix::Identity(dim,dim); gsMatrix RCG, RCGinv; T J; for (index_t i=0; i!=N; i++) { - E = data.m_parmat(0,i); - nu= data.m_parmat(1,i); - lambda = E * nu / ( ( 1. + nu ) * ( 1. - 2. * nu ) ); - mu = E / ( 2. * ( 1. + nu ) ); - gsAsMatrix F = data.m_F.reshapeCol(i,dim,dim); gsAsMatrix S = Sresult.reshapeCol(i,dim,dim); J = F.determinant(); RCG = F.transpose() * F; RCGinv = RCG.cramerInverse(); - S = (lambda*(J*J-1)/2-mu)*RCGinv + mu*I; + S = ((lambda(0,i))*(J*J-1)/2-mu(0,i))*RCGinv + mu(0,i)*I; } } + using Base::eval_matrix_into; /// See \ref gsMaterialBase.h for more details void eval_matrix_into(const gsMaterialData & data, gsMatrix & Cresult) const { @@ -117,15 +118,13 @@ class gsNeoHookeQuadMaterial : public gsMaterialBase symmetricIdentityTensor(Cmu,I); // Lamé parameters - T E, nu; - T lambda, mu; + gsMatrix lambda(1,N), mu(1,N); + gsMatrix E = data.m_pars[0]; + gsMatrix nu = data.m_pars[1]; + lambda.array() = E.array() * nu.array() / ( ( 1. + nu.array() ) * ( 1. - 2. * nu.array() ) ); + mu.array() = E.array() / ( 2. * ( 1. + nu.array() ) ); for (index_t i=0; i!=N; i++) { - E = data.m_parmat(0,i); - nu= data.m_parmat(1,i); - lambda = E * nu / ( ( 1. + nu ) * ( 1. - 2. * nu ) ); - mu = E / ( 2. * ( 1. + nu ) ); - gsAsMatrix F = data.m_F.reshapeCol(i,dim,dim); J = F.determinant(); @@ -134,9 +133,9 @@ class gsNeoHookeQuadMaterial : public gsMaterialBase // Compute C matrixTraceTensor(C,RCGinv,RCGinv); - C *= lambda*J*J; + C *= lambda(0,i)*J*J; symmetricIdentityTensor(Ctemp,RCGinv); - C += (mu-lambda*(J*J-1)/2)*Ctemp; + C += (mu(0,i)-lambda(0,i)*(J*J-1)/2)*Ctemp; Cresult.reshapeCol(i,sz,sz) = C; } } diff --git a/src/gsVisitorLinearElasticityMM.h b/src/gsVisitorLinearElasticityMM.h index c788cab..6826f4d 100644 --- a/src/gsVisitorLinearElasticityMM.h +++ b/src/gsVisitorLinearElasticityMM.h @@ -42,7 +42,7 @@ class gsVisitorLinearElasticityMM //material matrix {} void initialize(const gsBasisRefs & basisRefs, - const index_t patchIndex, + const index_t /* patchIndex */, const gsOptionList & options, gsQuadRule & rule) { @@ -94,7 +94,7 @@ class gsVisitorLinearElasticityMM //material matrix } - inline void assemble(gsDomainIteratorWrapper & element, + inline void assemble(gsDomainIteratorWrapper & /* element */, const gsVector & quWeights) { // initialize local matrix and rhs diff --git a/src/gsVisitorNonLinearElasticityMM.h b/src/gsVisitorNonLinearElasticityMM.h index 109b311..6266588 100644 --- a/src/gsVisitorNonLinearElasticityMM.h +++ b/src/gsVisitorNonLinearElasticityMM.h @@ -168,7 +168,7 @@ class gsVisitorNonLinearElasticityMM material->eval_matrix_into(data,matValues); } - inline void assemble(gsDomainIteratorWrapper & element, + inline void assemble(gsDomainIteratorWrapper & /* element */, const gsVector & quWeights) { // initialize local matrix and rhs