225                                        {
  227 
  234 
  235  auto t_w = this->getFTensor0IntegrationWeight();
  236 
  237  
  238  auto t_row_base = row_data.getFTensor1N<3>();
  239 
  248 
  250 
  251  auto t_grad = getFTensor2FromMat<DIM, DIM>(*(
matGradPtr));
 
  252 
  253  
  254  auto t_flux = getFTensor1FromMat<DIM>(*
fluxVec);
 
  255 
  256  
  257  for (size_t gg = 0; gg != AssemblyDomainEleOp::nbIntegrationPts; ++gg) {
  258 
  260    auto t_J = determinantTensor(t_F);     
  261    CHKERR invertTensor(t_F, t_J, t_F_inv);
 
  262 
  263    t_right_Cauchy_Green(M, L) =
  266 
  267    const double alpha = this->getMeasure() * t_w;
  268 
  269    
  270    
  271    auto t_vec = getFTensor1FromPtr<DIM>(&this->locMat(0, 0));
  272 
  273    
  274    auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
  275 
  276    auto alpha_resistance_Jinv =
  278    t_F_flux(
l) = t_F(
l, L) * t_flux(L);
 
  279 
  280    t_FtF_Q(M) = t_right_Cauchy_Green(M, L) * t_flux(L);
  281 
  282    
  283    size_t rr = 0;
  284    for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
  285      auto t_col_grad_base = col_data.getFTensor1DiffN<DIM>(gg, 0);
  286 
  287      t_FtF_Finv_Q_row_base(
J, 
l) = t_FtF_Q(M) * t_row_base(M) * t_F_inv(
J, 
l);
 
  288      t_F_row_base(
l) = t_F(
l, M) * t_row_base(M);
 
  289      t_F_Q_row_base(
l, M) = t_F_flux(
l) * t_row_base(M);
 
  290 
  291      
  292      
  293      for (size_t cc = 0; cc != AssemblyDomainEleOp::nbCols / DIM; ++cc) {
  294        t_vec(
l) += alpha_resistance_Jinv *
 
  295                    (-t_FtF_Finv_Q_row_base(
J, 
l) * t_col_grad_base(
J) +
 
  296                     t_F_Q_row_base(
l, M) * t_col_grad_base(M) +
 
  297                     t_F_row_base(
l) * t_col_grad_base(L) * t_flux(L));
 
  298        ++t_col_grad_base;
  299        ++t_vec;
  300      }
  301      ++t_row_base;
  302    }
  303    for (; rr < AssemblyDomainEleOp::nbRowBaseFunctions; ++rr)
  304      ++t_row_base;
  305 
  306    ++t_w; 
  307    ++t_coords;
  308    ++t_flux;
  309    ++t_grad;
  310  }
  311 
  313}
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'J', DIM1 > J
FTensor::Index< 'l', 3 > l
FTensor::Index< 'M', 3 > M
FTensor::Index< 'm', 3 > m