From 2de96c84ab5a38c1dd4ad3d9ebb68b1c6201f816 Mon Sep 17 00:00:00 2001 From: Klaus <klaus.boehnlein@tu-dresden.de> Date: Sun, 28 Aug 2022 17:08:18 +0200 Subject: [PATCH] Update --- dune/microstructure/CorrectorComputer.hh | 57 ++++++-- dune/microstructure/prestrainedMaterial.hh | 151 +++++++++++---------- inputs/cellsolver.parset | 2 +- src/Cell-Problem-New.cc | 47 ++++--- 4 files changed, 152 insertions(+), 105 deletions(-) diff --git a/dune/microstructure/CorrectorComputer.hh b/dune/microstructure/CorrectorComputer.hh index 17809b83..323ddbc8 100644 --- a/dune/microstructure/CorrectorComputer.hh +++ b/dune/microstructure/CorrectorComputer.hh @@ -159,6 +159,7 @@ public: shared_ptr<FuncScalar> getMu(){return make_shared<FuncScalar>(mu_);} shared_ptr<FuncScalar> getLambda(){return make_shared<FuncScalar>(lambda_);} + shared_ptr<Material> getMaterial(){return make_shared<Material>(material_);} // --- Get Correctors // shared_ptr<VectorCT> getMcontainer(){return make_shared<VectorCT>(mContainer);} @@ -265,6 +266,11 @@ public: auto elasticityTensor = material_.getElasticityTensor(); + auto indicatorFunction = material_.getIndicatorFunction(); + // auto indicatorFunctionGVF = material_.getIndicatorFunctionGVF(); + // auto indicatorFunction = localFunction(indicatorFunctionGVF); + // indicatorFunction.bind(element); + // LocalBasis-Offset const int localPhiOffset = localView.size(); @@ -342,11 +348,16 @@ public: // auto etmp = material_.applyElasticityTensorLocal(defGradientU,quadPos); // printmatrix(std::cout, etmp, "etmp", "--"); // double energyDensity= scalarProduct(etmp,defGradientV); - double energyDensity= scalarProduct(material_.applyElasticityTensor(defGradientU,element.geometry().global(quadPos)),defGradientV); + // double energyDensity= scalarProduct(material_.applyElasticityTensor(defGradientU,element.geometry().global(quadPos)),defGradientV); + + // double energyDensity= scalarProduct(elasticityTensor(defGradientU,indicatorFunction(element.geometry().global(quadPos))),sym(defGradientV)); + // double energyDensity= scalarProduct(elasticityTensor(defGradientU,indicatorFunction(quadPos)),sym(defGradientV)); + // double energyDensity= scalarProduct(material_.applyElasticityTensor(defGradientU,element.geometry().global(quadPos)),sym(defGradientV)); + // double energyDensity= scalarProduct(material_.applyElasticityTensor(defGradientU,quadPos),sym(defGradientV)); // double energyDensity= scalarProduct(material_.applyElasticityTensorLocal(defGradientU,quadPos),defGradientV); - // double energyDensity = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), defGradientU, defGradientV); + double energyDensity = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), defGradientU, defGradientV); // double energyDensity = linearizedStVenantKirchhoffDensity(mu(element.geometry().global(quadPos)), lambda(element.geometry().global(quadPos)), defGradientU, defGradientV); //TEST // double energyDensity = generalizedDensity(mu(quadPos), lambda(quadPos), defGradientU, defGradientV); // also works.. @@ -358,10 +369,15 @@ public: // "m*phi" & "phi*m" - part for( size_t m=0; m<3; m++) { - double energyDensityGphi= scalarProduct(material_.applyElasticityTensor(basisContainer[m],element.geometry().global(quadPos)),defGradientV); + + // double energyDensityGphi= scalarProduct(material_.applyElasticityTensor(basisContainer[m],element.geometry().global(quadPos)),defGradientV); + // double energyDensityGphi= scalarProduct(elasticityTensor(basisContainer[m],indicatorFunction(element.geometry().global(quadPos))),sym(defGradientV)); + // double energyDensityGphi= scalarProduct(elasticityTensor(basisContainer[m],indicatorFunction(quadPos)),sym(defGradientV)); + // double energyDensityGphi= scalarProduct(material_.applyElasticityTensor(basisContainer[m],element.geometry().global(quadPos)),sym(defGradientV)); + // double energyDensityGphi= scalarProduct(material_.applyElasticityTensor(basisContainer[m],quadPos),sym(defGradientV)); // double energyDensityGphi= scalarProduct(elasticityTensor(basisContainer[m],element.geometry().global(quadPos)),defGradientV); // double energyDensityGphi= scalarProduct(material_.applyElasticityTensorLocal(basisContainer[m],quadPos),defGradientV); - // double energyDensityGphi = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), basisContainer[m], defGradientV); + double energyDensityGphi = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), basisContainer[m], defGradientV); // double energyDensityGphi = linearizedStVenantKirchhoffDensity(mu(element.geometry().global(quadPos)), lambda(element.geometry().global(quadPos)), basisContainer[m], defGradientV); //TEST auto value = energyDensityGphi * quadPoint.weight() * integrationElement; elementMatrix[row][localPhiOffset+m] += value; @@ -383,11 +399,15 @@ public: // std::cout << "mu(quadPos): " << mu(quadPos) << std::endl; // std::cout << "lambda(quadPos): " << lambda(quadPos) << std::endl; + // double energyDensityGG= scalarProduct(elasticityTensor(basisContainer[m],indicatorFunction(element.geometry().global(quadPos))),sym(basisContainer[n])); // double energyDensityGG= scalarProduct(elasticityTensor(basisContainer[m],element.geometry().global(quadPos)),basisContainer[n]); - double energyDensityGG= scalarProduct(material_.applyElasticityTensor(basisContainer[m],element.geometry().global(quadPos)),basisContainer[n]); + // double energyDensityGG= scalarProduct(material_.applyElasticityTensor(basisContainer[m],element.geometry().global(quadPos)),basisContainer[n]); + // double energyDensityGG= scalarProduct(elasticityTensor(basisContainer[m],indicatorFunction(quadPos)),sym(basisContainer[n])); + // double energyDensityGG= scalarProduct(material_.applyElasticityTensor(basisContainer[m],element.geometry().global(quadPos)),sym(basisContainer[n])); + // double energyDensityGG= scalarProduct(material_.applyElasticityTensor(basisContainer[m],quadPos),sym(basisContainer[n])); // double energyDensityGG= scalarProduct(material_.applyElasticityTensorLocal(basisContainer[m],quadPos),basisContainer[n]); - // double energyDensityGG = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), basisContainer[m], basisContainer[n]); + double energyDensityGG = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), basisContainer[m], basisContainer[n]); // double energyDensityGG = linearizedStVenantKirchhoffDensity(mu(element.geometry().global(quadPos)), lambda(element.geometry().global(quadPos)), basisContainer[m], basisContainer[n]); //TEST elementMatrix[localPhiOffset+m][localPhiOffset+n] += energyDensityGG * quadPoint.weight() * integrationElement; // += !!!!! (Fixed-Bug) @@ -423,6 +443,13 @@ public: // using MatrixRT = FieldMatrix< double, dimworld, dimworld>; + auto elasticityTensor = material_.getElasticityTensor(); + auto indicatorFunction = material_.getIndicatorFunction(); + // // auto indicatorFunction = material_.getLocalIndicatorFunction(); + // auto indicatorFunctionGVF = material_.getIndicatorFunctionGVF(); + // auto indicatorFunction = localFunction(indicatorFunctionGVF); + // indicatorFunction.bind(element); + // Set of shape functions for a single element const auto& localFiniteElement= localView.tree().child(0).finiteElement(); const auto nSf = localFiniteElement.localBasis().size(); @@ -493,10 +520,14 @@ public: defGradientV = crossSectionDirectionScaling((1.0/gamma_),defGradientV); - double energyDensity= scalarProduct(material_.applyElasticityTensor((-1.0)*forceTerm(quadPos),element.geometry().global(quadPos)),defGradientV); + // double energyDensity= scalarProduct(elasticityTensor((-1.0)*forceTerm(quadPos),indicatorFunction(element.geometry().global(quadPos))),sym(defGradientV)); + // double energyDensity= scalarProduct(elasticityTensor((-1.0)*forceTerm(quadPos),indicatorFunction(quadPos)),sym(defGradientV)); + // double energyDensity= scalarProduct(material_.applyElasticityTensor((-1.0)*forceTerm(quadPos),element.geometry().global(quadPos)),sym(defGradientV)); + // double energyDensity= scalarProduct(material_.applyElasticityTensor((-1.0)*forceTerm(quadPos),quadPos),sym(defGradientV)); + // double energyDensity= scalarProduct(material_.applyElasticityTensor((-1.0)*forceTerm(quadPos),element.geometry().global(quadPos)),defGradientV); // double energyDensity= scalarProduct(material_.applyElasticityTensorLocal((-1.0)*forceTerm(quadPos),quadPos),defGradientV); - // double energyDensity = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos),(-1.0)*forceTerm(quadPos), defGradientV ); + double energyDensity = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos),(-1.0)*forceTerm(quadPos), defGradientV ); // double energyDensity = linearizedStVenantKirchhoffDensity(mu(element.geometry().global(quadPos)), lambda(element.geometry().global(quadPos)),forceTerm(quadPos), defGradientV ); //TEST // double energyDensity = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos),(-1.0)*forceTerm(quadPos), defGradientV ); //TEST // double energyDensity = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos),forceTerm(element.geometry().global(quadPos)), defGradientV ); //TEST @@ -508,9 +539,13 @@ public: // "f*m"-part for (size_t m=0; m<3; m++) { - double energyDensityfG = scalarProduct(material_.applyElasticityTensor((-1.0)*forceTerm(quadPos),element.geometry().global(quadPos)),basisContainer[m]); + // double energyDensityfG= scalarProduct(elasticityTensor((-1.0)*forceTerm(quadPos),indicatorFunction(element.geometry().global(quadPos))),sym(basisContainer[m])); + // double energyDensityfG= scalarProduct(elasticityTensor((-1.0)*forceTerm(quadPos),indicatorFunction(quadPos)),sym(basisContainer[m])); + // double energyDensityfG = scalarProduct(material_.applyElasticityTensor((-1.0)*forceTerm(quadPos),element.geometry().global(quadPos)),sym(basisContainer[m])); + // double energyDensityfG = scalarProduct(material_.applyElasticityTensor((-1.0)*forceTerm(quadPos),quadPos),sym(basisContainer[m])); + // double energyDensityfG = scalarProduct(material_.applyElasticityTensor((-1.0)*forceTerm(quadPos),element.geometry().global(quadPos)),basisContainer[m]); // double energyDensityfG = scalarProduct(material_.applyElasticityTensor((-1.0)*forceTerm(quadPos),quadPos),basisContainer[m]); - // double energyDensityfG = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), (-1.0)*forceTerm(quadPos),basisContainer[m] ); + double energyDensityfG = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), (-1.0)*forceTerm(quadPos),basisContainer[m] ); // double energyDensityfG = linearizedStVenantKirchhoffDensity(mu(element.geometry().global(quadPos)), lambda(element.geometry().global(quadPos)), forceTerm(quadPos),basisContainer[m] ); //TEST // double energyDensityfG = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), (-1.0)*forceTerm(quadPos),basisContainer[m] ); //TEST // double energyDensityfG = linearizedStVenantKirchhoffDensity(mu(quadPos), lambda(quadPos), forceTerm(element.geometry().global(quadPos)),basisContainer[m] );//TEST @@ -1277,7 +1312,7 @@ public: std::cout << "check_Orthogonality:" << "("<< a <<"," << b << "): " << energy << std::endl; if(energy > 1e-1) - std::cout << "WARNING: check Orthogonality! apparently (75) not satisfied on discrete level" << std::endl; + std::cout << "WARNING: check_Orthogonality failed! apparently orthogonality (75) not satisfied on discrete level" << std::endl; } return 0; diff --git a/dune/microstructure/prestrainedMaterial.hh b/dune/microstructure/prestrainedMaterial.hh index 274cf421..ac423af3 100644 --- a/dune/microstructure/prestrainedMaterial.hh +++ b/dune/microstructure/prestrainedMaterial.hh @@ -29,22 +29,33 @@ using std::make_shared; // return !str[h] ? 5381 : (str2int(str, h+1) * 33) ^ str[h]; // } - + template<class Domain> + int indicatorFunction_material_1(const Domain& x) + { + double theta=0.25; + if (x[0] < (-1/2+theta) && x[2]<(-1/2+theta)) + return 1; //#Phase1 + else if (x[1]< (-1/2+theta) && x[2]>(1/2-theta)) + return 2; //#Phase2 + else + return 0; //#Phase3 + } MatrixRT material_1(const MatrixRT& G, const int& phase) { - FieldVector<double,3> mu = {1.0, 2.0, 3.0}; - FieldVector<double,3> lambda = {1.0 ,2.0 , 5.0}; - - if (phase == 0) - return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id(); - else - return 2.0 * mu[1] * sym(G) + lambda[2] * trace(sym(G)) * Id(); - + const FieldVector<double,3> mu = {80.0, 80.0, 60.0}; + const FieldVector<double,3> lambda = {80.0, 80.0, 25.0}; + if (phase == 1) + return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id(); + if (phase == 2) + return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id(); + else + return 2.0 * mu[2] * sym(G) + lambda[2] * trace(sym(G)) * Id(); } + template <class GridView> // needed for GridViewFunctions class prestrainedMaterial { @@ -102,7 +113,8 @@ protected: // FuncScalar indicatorFunction_; // GridViewFunction<double(const Domain&), GridView> indicatorFunction_; - GridViewFunction<int(const Domain&), GridView> indicatorFunction_; + GridViewFunction<int(const Domain&), GridView> indicatorFunctionGVF_; + Func2int indicatorFunction_; // static const auto indicatorFunction_; // VectorCT x_1_, x_2_, x_3_; // (all) Corrector coefficient vectors @@ -148,7 +160,7 @@ public: std::cout << "materialFunctionName_ : " << materialFunctionName_ << std::endl; - Python::Module module = Python::import(materialFunctionName_); + // Python::Module module = Python::import(materialFunctionName_); // elasticityTensor_ = Python::make_function<MatrixRT>(module.get("L")); @@ -159,40 +171,45 @@ public: // module.get("Phases").toC<int>(Phases_); - auto indicatorFunction = Python::make_function<int>(module.get("indicatorFunction")); - indicatorFunction_ = Dune::Functions::makeGridViewFunction(indicatorFunction , gridView_); - - + // auto indicatorFunction = Python::make_function<int>(module.get("indicatorFunction")); + // indicatorFunction_ = Python::make_function<int>(module.get("indicatorFunction")); + // indicatorFunction_ = Dune::Functions::makeGridViewFunction(indicatorFunction , gridView_); - L1_ = Python::make_function<MatrixRT>(module.get("L1")); - L2_ = Python::make_function<MatrixRT>(module.get("L2")); - L3_ = Python::make_function<MatrixRT>(module.get("L3")); - - // indicatorFunction_ = localFunction(indicatorFunctionGVF); + // L1_ = Python::make_function<MatrixRT>(module.get("L1")); + // L2_ = Python::make_function<MatrixRT>(module.get("L2")); + // L3_ = Python::make_function<MatrixRT>(module.get("L3")); // Func2TensorParam elasticityTensor_ = Python::make_function<double>(module.get("L")); // Func2Tensor materialFunction_ = Python::make_function<double>(module.get("f")); // bool isotropic_ = true; // read from module File TODO - // Func2Tensor elasticityTensor_ = Python::make_function<double>(module.get("L")); - // Func2Tensor elasticityTensor_ = Python::make_function<MatrixRT>(module.get("L")); } - - - - - // static MatrixRT material_1(const MatrixRT& G, const int& phase) - // { - // FieldVector<double,3> mu = {1.0, 2.0, 3.0}; - // FieldVector<double,3> lambda = {1.0 ,2.0 , 5.0}; - - // if (phase == 0) - // return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id(); - // else - // return 2.0 * mu[1] * sym(G) + lambda[2] * trace(sym(G)) * Id(); - - // } +///////////////////////////////////////////////////////////////////////////////////////////////////////// + + + +// static int indicatorFunction_material_1(const Domain& x) +// { +// double theta=0.25; +// if (x[0] < (-1/2+theta) && x[2]<(-1/2+theta)) +// return 1; //#Phase1 +// else if (x[1]< (-1/2+theta) && x[2]>(1/2-theta)) +// return 2; //#Phase2 +// else +// return 0; //#Phase3 +// } +// static MatrixRT material_1(const MatrixRT& G, const int& phase) +// { +// FieldVector<double,3> mu = {80.0, 80.0, 60.0}; +// FieldVector<double,3> lambda = {80.0, 80.0, 25.0}; +// if (phase == 1) +// return 2.0 * mu[0] * sym(G) + lambda[0] * trace(sym(G)) * Id(); +// if (phase == 2) +// return 2.0 * mu[1] * sym(G) + lambda[1] * trace(sym(G)) * Id(); +// else +// return 2.0 * mu[2] * sym(G) + lambda[2] * trace(sym(G)) * Id(); +// } //---function that determines elasticity Tensor @@ -213,43 +230,37 @@ public: { if(name == "material") { + // indicatorFunctionGVF_ = Dune::Functions::makeGridViewFunction(indicatorFunction_material_1, gridView_); + // indicatorFunction_ = indicatorFunction_material_1; + indicatorFunctionGVF_ = Dune::Functions::makeGridViewFunction(indicatorFunction_material_1<Domain>, gridView_); + indicatorFunction_ = indicatorFunction_material_1<Domain>; elasticityTensor_ = material_1; } else DUNE_THROW(Exception, "There exists no material in materialDefinitions.hh with this name "); } - // } - // void setupElasticityTensor() - // { - // if (materialFunctionName_=="material") - // { - // elasticityTensor_ = &material_1; - // std::cout << "typeid(elasticityTensor_).name() :" << typeid(elasticityTensor_).name() << '\n'; - // // std::cout << " type_name<decltype(elasticityTensor_)>() " << type_name<decltype(elasticityTensor_)>() << '\n'; - // } - - // return; - - // } //--- apply elasticityTensor_ to input Matrix G at position x MatrixRT applyElasticityTensor(const MatrixRT& G, const Domain& x) const { - // Python::Module module = Python::import("material"); // auto indicatorFunctionTest = Python::make_function<double>(module.get("indicatorFunction")); - // // return elasticityTensor_(G,indicatorFunctionTest(x)); - int phase = indicatorFunction_(x); + // auto IFunction = localFunction(indicatorFunction_); + // auto IFunction = this->getIndicatorFunction(); + // auto tmp = Dune::Functions::makeGridViewFunction(indicatorFunction_material_1, gridView_); + // auto tmpLocal = LocalF + // return elasticityTensor_(G,IFunction(x)); + // return elasticityTensor_(G,indicatorFunction_(x)); + return elasticityTensor_(G,indicatorFunctionGVF_(x)); + // int phase = indicatorFunction_(x); // auto tmp = elasticityTensor_(G,phase); - auto tmp = material_1(G,indicatorFunction_(x)); + // auto tmp = material_1(G,indicatorFunction_(x)); // printmatrix(std::cout, material_1(G,indicatorFunction_(x)), "material_1(G,indicatorFunction_(x))", "--"); // printmatrix(std::cout, elasticityTensor_(G,phase), "elasticityTensor_(G,phase)", "--"); - - return tmp; + // return tmp; // return material_1(G,indicatorFunction_(x)); - } @@ -267,19 +278,19 @@ public: // } - MatrixRT applyElasticityTensorLocal(const MatrixRT& G, const Domain& x) const - { - //--- apply elasticityTensor_ to input Matrix G at position x (local coordinates) - // MatrixRT G1_ {{1.0, 0.0, 0.0}, {0.0, 0.0, 0.0}, {0.0, 0, 0.0}}; + // MatrixRT applyElasticityTensorLocal(const MatrixRT& G, const Domain& x) const + // { + // //--- apply elasticityTensor_ to input Matrix G at position x (local coordinates) + // // MatrixRT G1_ {{1.0, 0.0, 0.0}, {0.0, 0.0, 0.0}, {0.0, 0, 0.0}}; - if (indicatorFunction_(x) == 1) - return L1_(G); - else if (indicatorFunction_(x) == 2) - return L2_(G); - else - return L3_(G); + // if (indicatorFunction_(x) == 1) + // return L1_(G); + // else if (indicatorFunction_(x) == 2) + // return L2_(G); + // else + // return L3_(G); - } + // } @@ -308,7 +319,9 @@ public: // auto getIndicatorFunction() const {return indicatorFunction_;} - auto getIndicatorFunction() const {return localFunction(indicatorFunction_);} + auto getLocalIndicatorFunction() const {return localFunction(indicatorFunctionGVF_);} //get as localFunction + auto getIndicatorFunctionGVF() const {return indicatorFunctionGVF_;} //get as GridViewFunction + auto getIndicatorFunction() const {return indicatorFunction_;} // shared_ptr<Func2TensorParam> getElasticityTensor(){return make_shared<Func2TensorParam>(elasticityTensor_);} diff --git a/inputs/cellsolver.parset b/inputs/cellsolver.parset index 9f0192d8..4fac1d02 100644 --- a/inputs/cellsolver.parset +++ b/inputs/cellsolver.parset @@ -25,7 +25,7 @@ print_debug = true #(default=false) ## {start,finish} computes on all grid from 2^(start) to 2^finish refinement #---------------------------------------------------- -numLevels= 2 2 +numLevels= 2 3 #numLevels = 0 0 # computes all levels from first to second entry #numLevels = 2 2 # computes all levels from first to second entry #numLevels = 1 3 # computes all levels from first to second entry diff --git a/src/Cell-Problem-New.cc b/src/Cell-Problem-New.cc index a98ecfbc..4b024380 100644 --- a/src/Cell-Problem-New.cc +++ b/src/Cell-Problem-New.cc @@ -346,11 +346,11 @@ int main(int argc, char *argv[]) // std::cout << "decltype(elasticityTensor_) " << decltype(elasticityTensor_) << std::endl; - std::cout <<"typeid(elasticityTensor).name() :" << typeid(elasticityTensor_).name() << '\n'; + std::cout << "typeid(elasticityTensor).name() :" << typeid(elasticityTensor_).name() << '\n'; std::cout << "typeid(TestTensor).name() :" << typeid(TestTensor).name() << '\n'; using MatrixFunc = std::function< MatrixRT(const MatrixRT&) >; - std::cout << "Import NOW:" << std::endl; + // std::cout << "Import NOW:" << std::endl; // MatrixFunc symTest = Python::make_function<MatrixRT>(module.get("sym")); // auto indicatorFunction = Python::make_function<double>(module.get("indicatorFunction")); @@ -368,7 +368,7 @@ int main(int argc, char *argv[]) // GridView::Element // auto localindicatorFunction = localFunction(indicatorFunction); - std::cout << "typeid(localindicatorFunction).name() :" << typeid(localindicatorFunction).name() << '\n'; + // std::cout << "typeid(localindicatorFunction).name() :" << typeid(localindicatorFunction).name() << '\n'; // using MatrixDomainFunc = std::function< MatrixRT(const MatrixRT&,const Domain&)>; // // MatrixFunc elasticityTensor = Python::make_function<MatrixRT>(module.get("L")); @@ -397,28 +397,28 @@ int main(int argc, char *argv[]) - for (const auto& element : elements(Basis_CE.gridView())) - { - localindicatorFunction.bind(element); - int orderQR = 2; - const auto& quad = QuadratureRules<double,dim>::rule(element.type(), orderQR); - for (const auto& quadPoint : quad) - { - const auto& quadPos = quadPoint.position(); + // for (const auto& element : elements(Basis_CE.gridView())) + // { + // localindicatorFunction.bind(element); + // int orderQR = 2; + // const auto& quad = QuadratureRules<double,dim>::rule(element.type(), orderQR); + // for (const auto& quadPoint : quad) + // { + // const auto& quadPos = quadPoint.position(); - // std::cout << "localindicatorFunction(quadPos): " << localindicatorFunction(quadPos) << std::endl; + // // std::cout << "localindicatorFunction(quadPos): " << localindicatorFunction(quadPos) << std::endl; - // std::cout << "quadPos : " << quadPos << std::endl; - // auto temp = TestTensor(G1_, element.geometry().global(quadPos)); - // auto temp2 = elasticityTensor_(G1_, element.geometry().global(quadPos)); - // std::cout << "material_.applyElasticityTensor:" << std::endl; - auto tmp3 = material_.applyElasticityTensor(G1_, element.geometry().global(quadPos)); - // auto tmp3 = material_.applyElasticityTensor(G1_, quadPos); - printmatrix(std::cout, tmp3, "tmp3", "--"); - } - } + // // std::cout << "quadPos : " << quadPos << std::endl; + // // auto temp = TestTensor(G1_, element.geometry().global(quadPos)); + // // auto temp2 = elasticityTensor_(G1_, element.geometry().global(quadPos)); + // // std::cout << "material_.applyElasticityTensor:" << std::endl; + // // auto tmp3 = material_.applyElasticityTensor(G1_, element.geometry().global(quadPos)); + // // auto tmp3 = material_.applyElasticityTensor(G1_, quadPos); + // // printmatrix(std::cout, tmp3, "tmp3", "--"); + // } + // } @@ -557,8 +557,7 @@ int main(int argc, char *argv[]) // }; - } -/* + //------------------------------------------------------------------------------------------------ //--- compute Correctors @@ -787,6 +786,6 @@ int main(int argc, char *argv[]) std::cout << "Total time elapsed: " << globalTimer.elapsed() << std::endl; -*/ + } -- GitLab