61                const Element& element,
 
   62                const FVElementGeometry& fvGeometry,
 
   63                const ElementVolumeVariables& elemVolVars,
 
   64                const SubControlVolumeFace& scvf)
 
   66        const auto geometry = element.geometry();
 
   67        const auto& localBasis = fvGeometry.feLocalBasis();
 
   70        std::vector<ShapeValue> shapeVals;
 
   71        const auto ipLocal = geometry.local(scvf.ipGlobal());
 
   72        jacInvT_ = geometry.jacobianInverseTransposed(ipLocal);
 
   73        localBasis.evaluateJacobian(ipLocal, shapeJacobian_);
 
   74        localBasis.evaluateFunction(ipLocal, shapeVals);
 
   77        shapeValues_.resize(fvGeometry.numScv(), 0.0);
 
   78        if (!scvf.isOnFracture())
 
   79            std::copy(shapeVals.begin(), shapeVals.end(), shapeValues_.begin());
 
   82            const auto thisFacetIdx = scvf.facetIndexInElement();
 
   83            for (
const auto& scv: scvs(fvGeometry))
 
   84                if (scv.isOnFracture() && scv.facetIndexInElement() == thisFacetIdx)
 
   85                    shapeValues_[scv.indexInElement()] = shapeVals[scv.localDofIndex()];
 
   89        gradN_.resize(fvGeometry.numScv(), GlobalPosition(0.0));
 
   90        if (!scvf.isOnFracture())
 
   92            for (
const auto& scv: scvs(fvGeometry))
 
   93                if (!scv.isOnFracture())
 
   94                    jacInvT_.mv(shapeJacobian_[scv.localDofIndex()][0], gradN_[scv.indexInElement()]);
 
   98            const auto thisFacetIdx = scvf.facetIndexInElement();
 
  101            std::vector<unsigned int> facetLocalDofs;
 
  102            for (
const auto& scv : scvs(fvGeometry))
 
  103                if (scv.isOnFracture() && scv.facetIndexInElement() == thisFacetIdx)
 
  104                    facetLocalDofs.push_back(scv.localDofIndex());
 
  106            for (
const auto& scv: scvs(fvGeometry))
 
  109                if (scv.isOnFracture() && scv.facetIndexInElement() == thisFacetIdx)
 
  110                    jacInvT_.mv(shapeJacobian_[scv.localDofIndex()][0], gradN_[scv.indexInElement()]);
 
  113                else if (!scv.isOnFracture()
 
  114                         && std::find( facetLocalDofs.begin(),
 
  115                                       facetLocalDofs.end(),
 
  116                                       scv.localDofIndex() ) == facetLocalDofs.end())
 
  118                    jacInvT_.mv(shapeJacobian_[scv.localDofIndex()][0], gradN_[scv.indexInElement()]);