Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 15 additions & 17 deletions src/gsLinearMaterial.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ class gsLinearMaterial : public gsMaterialBase<T>
this->setParameter(1,nu);
}

using Base::eval_stress_into;
/// See \ref gsMaterialBase.h for more details
void eval_stress_into(const gsMaterialData<T> & data, gsMatrix<T> & Sresult) const
{
Expand All @@ -76,24 +77,22 @@ class gsLinearMaterial : public gsMaterialBase<T>
// Resize the result
Sresult.resize(dim*dim,N);

// Lamé parameters
T E, nu;
T lambda, mu;
gsMatrix<T> I = gsMatrix<T>::Identity(dim,dim);

// Lamé parameters
gsMatrix<T> lambda(1,N), mu(1,N);
gsMatrix<T> E = data.m_pars[0];
gsMatrix<T> 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<T, Dynamic, Dynamic> Emat = data.m_E.reshapeCol(i,dim,dim);
gsAsMatrix<T, Dynamic, Dynamic> 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<T> & data, gsMatrix<T> & Cresult) const
{
Expand All @@ -115,16 +114,15 @@ class gsLinearMaterial : public gsMaterialBase<T>
symmetricIdentityTensor<T>(Cmu,I);

// Lamé parameters
T E, nu;
T lambda, mu;
gsMatrix<T> lambda(1,N), mu(1,N);
gsMatrix<T> E = data.m_pars[0];
gsMatrix<T> 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;
}
}

Expand Down
22 changes: 10 additions & 12 deletions src/gsMaterialBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ class gsMaterialBase
this->eval_stress_into(data,Sresult);
}

virtual void eval_stress_into(const gsMaterialData<T> & data, gsMatrix<T> & Sresult) const
virtual void eval_stress_into(const gsMaterialData<T> & /* data */, gsMatrix<T> & /* Sresult */) const
{ GISMO_NO_IMPLEMENTATION; }

/**
Expand All @@ -305,7 +305,7 @@ class gsMaterialBase
this->eval_matrix_into(data,Cresult);
}

virtual void eval_matrix_into(const gsMaterialData<T> & data, gsMatrix<T> & Cresult) const
virtual void eval_matrix_into(const gsMaterialData<T> & /* data */, gsMatrix<T> & /* Cresult */) const
{ GISMO_NO_IMPLEMENTATION; }

/**
Expand All @@ -330,7 +330,7 @@ class gsMaterialBase
this->eval_matrix_pos_into(data,Cresult);
}

virtual void eval_matrix_pos_into(const gsMaterialData<T> & data, gsMatrix<T> & Cresult) const
virtual void eval_matrix_pos_into(const gsMaterialData<T> & /* data */, gsMatrix<T> & /* Cresult */) const
{ GISMO_NO_IMPLEMENTATION; }

/**
Expand All @@ -355,7 +355,7 @@ class gsMaterialBase
this->eval_energy_into(data,Presult);
}

virtual void eval_energy_into(const gsMaterialData<T> & data, gsMatrix<T> & Presult) const
virtual void eval_energy_into(const gsMaterialData<T> & /* data */, gsMatrix<T> & /* Presult */) const
{ GISMO_NO_IMPLEMENTATION; }

/// Sets the density
Expand Down Expand Up @@ -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);
}

/**
Expand Down Expand Up @@ -507,17 +507,16 @@ 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<T> pars;
for (size_t v=0; v!=m_pars.size(); v++)
{
m_pars[v].first->piece(data.patch).eval_into((m_pars[v].second) ?
map_ori.points :
map_ori.values[0],
pars);
data.m_parmat.row(v) = pars;
data.m_pars[v] = pars;
}
}

Expand All @@ -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<T> pars;
gsMatrix<T> jac_ori, jac_def;
gsMatrix<T> I = gsMatrix<T>::Identity(data.dim,data.dim);
Expand All @@ -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;
}
}

Expand Down Expand Up @@ -685,7 +683,7 @@ class gsMaterialData
typename gsMaterialBase<T>::function_ptr m_undeformed;
typename gsMaterialBase<T>::function_ptr m_deformed;

mutable gsMatrix<T> m_parmat;
mutable std::vector<gsMatrix<T>> m_pars;
mutable gsMatrix<T> m_rhoMat;
// mutable gsMatrix<T> m_jac_ori, m_jac_def;
mutable gsMatrix<T> m_F, m_E;
Expand Down
Loading