From 626a094538cb772a1f709fffe5b6f991ac3b25de Mon Sep 17 00:00:00 2001 From: "laura.stengel" <laura.stengel@kit.edu> Date: Thu, 28 Nov 2024 15:13:26 +0100 Subject: [PATCH] adapted call of discretizations --- src/coupled/solvers/SegregatedSolver.cpp | 4 ++-- src/coupled/transfers/MultiPartTransfer.cpp | 6 +++--- src/elasticity/assemble/IElasticity.cpp | 2 +- .../solvers/IterativePressureSolver.cpp | 2 +- src/electrophysiology/assemble/Monodomain.cpp | 19 ++++++++++--------- src/electrophysiology/solvers/ElphySolver.cpp | 2 +- 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/coupled/solvers/SegregatedSolver.cpp b/src/coupled/solvers/SegregatedSolver.cpp index ea9fd8f3b..b302d0527 100644 --- a/src/coupled/solvers/SegregatedSolver.cpp +++ b/src/coupled/solvers/SegregatedSolver.cpp @@ -353,11 +353,11 @@ bool SegregatedSolverOnCells::Method(IElphyAssemble &elphyAssemble, IElasticity Vector &potential, Vector &displacement) { const Meshes &M = displacement.GetMeshes(); - LagrangeDiscretization disc0(M, 0, 1); + auto disc0 = std::make_shared<LagrangeDiscretization>(M, 0, 1); Vector gamma_f_c(disc0); gamma_f_c = 0; const Meshes &Mpot = potential.GetMeshes(); - LagrangeDiscretization disc0pot(Mpot, 0, 1); + auto disc0pot = std::make_shared<LagrangeDiscretization>(Mpot, 0, 1); Vector gamma_f_c_pot(disc0pot); gamma_f_c_pot = 0; diff --git a/src/coupled/transfers/MultiPartTransfer.cpp b/src/coupled/transfers/MultiPartTransfer.cpp index 3f5345816..2a3a7e29f 100644 --- a/src/coupled/transfers/MultiPartTransfer.cpp +++ b/src/coupled/transfers/MultiPartTransfer.cpp @@ -111,7 +111,7 @@ void MultiPartLagrangeTransfer::ProlongateCell(const Vector &coarse, Vector &fin const Meshes &M_coarse = coarse.GetMeshes(); int fineLevel=M_fine.Level(); int coarseLevel=M_coarse.Level(); - LagrangeDiscretization discFine (M_fine, 0, 1); + auto discFine = std::make_shared<LagrangeDiscretization>(M_fine, 0, 1); fine = 0.0; if(fineLevel!=coarseLevel){ std::unique_ptr<Vector> fineNew; @@ -211,8 +211,8 @@ void MultiPartLagrangeTransfer::ProjectCells(Vector &coarse, const Vector &fine) coarse = 0.0; if(fineLevel!=coarseLevel){ - LagrangeDiscretization discFine (M_fine, 0, 1); - LagrangeDiscretization discCoarse (M_coarse, 0, 1); + auto discFine = std::make_shared<LagrangeDiscretization>(M_fine, 0, 1); + auto discCoarse = std::make_shared<LagrangeDiscretization>(M_coarse, 0, 1); std::unique_ptr<Vector> finePerStep; std::unique_ptr<Vector> fineCoarsePerStep; diff --git a/src/elasticity/assemble/IElasticity.cpp b/src/elasticity/assemble/IElasticity.cpp index 6e4ed0dcd..3f715729e 100644 --- a/src/elasticity/assemble/IElasticity.cpp +++ b/src/elasticity/assemble/IElasticity.cpp @@ -25,7 +25,7 @@ void IElasticity::SetInitialValue(Vector &u) { eProblem.Initialize(StepSize(), Time(), ChamberVolume(u)); const Meshes &M = u.GetMeshes(); auto disc03 = std::make_shared<LagrangeDiscretization>(M, 0, 3); - gamma_c= !Prestress ? std::make_unique<Vector>(*disc03,prestressLevel) : std::make_unique<Vector>(*disc03); + gamma_c= !Prestress ? std::make_unique<Vector>(disc03,prestressLevel) : std::make_unique<Vector>(disc03); if (!Prestress) { Prestress = std::make_unique<Vector>(0.0, u); diff --git a/src/elasticity/solvers/IterativePressureSolver.cpp b/src/elasticity/solvers/IterativePressureSolver.cpp index 5b0cd9d57..d3299f74e 100644 --- a/src/elasticity/solvers/IterativePressureSolver.cpp +++ b/src/elasticity/solvers/IterativePressureSolver.cpp @@ -89,7 +89,7 @@ void CalculatePrestress(IElasticity &assemble, Vector &u) { Config::Get("PrestressSteps", prestressSteps); int prestressLevel=0; Config::Get("PrestressLevel", prestressLevel); - Vector uPrestressLevel(assemble.GetDisc(),prestressLevel); + Vector uPrestressLevel(assemble.GetSharedDisc(),prestressLevel); uPrestressLevel.Accumulate(); IterativePressureSolver prestressSolver(assemble.GetElasticityProblem(), prestressSteps); prestressSolver.Method(assemble, uPrestressLevel); diff --git a/src/electrophysiology/assemble/Monodomain.cpp b/src/electrophysiology/assemble/Monodomain.cpp index 3c2bb6a1a..aba40c5c7 100644 --- a/src/electrophysiology/assemble/Monodomain.cpp +++ b/src/electrophysiology/assemble/Monodomain.cpp @@ -43,7 +43,7 @@ void Monodomain::updateExternalCurrent(const Vector &V) { double tNew = Time() + timeUpdateIext; double tHalve = Time() + (StepSize() * 0.5); for (row r = V.rows(); r != V.rows_end(); ++r) { - for (int j = 0; j < r.n(); ++j) { + for (int j = 0; j < r.NumberOfDofs(); ++j) { (*Iext)(r, j) = excitationFunc(elphyModel.TimeScale() * tNew, Amplitude(excData, r, j), elphyModel.TimeScale() * Excitation(excData, r, j), elphyModel.TimeScale() * Duration(excData, r, j)); @@ -204,7 +204,7 @@ void MonodomainLINodes::updateIionVecs(const Vectors &VCW) { vout(10).StartBlock("Update Iion and DVIion"); std::vector<double> vcw(elphyModel.ElphySize()); for (row r = VCW[0].rows(); r != VCW[0].rows_end(); ++r) { - for (int j = 0; j < r.n(); ++j) { + for (int j = 0; j < r.NumberOfDofs(); ++j) { for (int i = 0; i < elphyModel.ElphySize(); i++) { vcw[i] = VCW[i](r, j); } @@ -218,7 +218,7 @@ void MonodomainLINodes::updateIionVecs(const Vectors &VCW) { void MonodomainLINodes::updateIion(const Vectors &VCW) { std::vector<double> vcw(elphyModel.ElphySize()); for (row r = VCW[0].rows(); r != VCW[0].rows_end(); ++r) { - for (int j = 0; j < r.n(); ++j) { + for (int j = 0; j < r.NumberOfDofs(); ++j) { for (int i = 0; i < elphyModel.ElphySize(); i++) { vcw[i] = VCW[i](r, j); } @@ -232,7 +232,7 @@ void MonodomainLINodes::updateDVIion(const Vectors &VCW) { std::vector<double> vcw(elphyModel.ElphySize()); for (row r = VCW[0].rows(); r != VCW[0].rows_end(); ++r) { - for (int j = 0; j < r.n(); ++j) { + for (int j = 0; j < r.NumberOfDofs(); ++j) { for (int i = 0; i < elphyModel.ElphySize(); i++) { vcw[i] = VCW[i](r, j); } @@ -487,7 +487,7 @@ void MonodomainFullNewton::Jacobi(const cell &c, const Vector &V, Matrix &jacobi void MonodomainFullNewton::updateVCW(const Vectors &VCW) { for (row r = VCW[0].rows(); r != VCW[0].rows_end(); ++r) { - for (int j = 0; j < r.n(); ++j) { + for (int j = 0; j < r.NumberOfDofs(); ++j) { for (int i = 0; i < elphyModel.ElphySize(); i++) { (*VACAW)[i](r, j) = VCW[i](r, j); } @@ -548,7 +548,7 @@ void MonodomainSemiImplicitNodes::updateIionVecs(const Vectors &VCW) { vout(10).StartBlock("Update Iion"); std::vector<double> vcw(elphyModel.ElphySize()); for (row r = VCW[0].rows(); r != VCW[0].rows_end(); ++r) { - for (int j = 0; j < r.n(); ++j) { + for (int j = 0; j < r.NumberOfDofs(); ++j) { for (int i = 0; i < elphyModel.ElphySize(); i++) { vcw[i] = VCW[i](r, j); } @@ -610,7 +610,7 @@ void MonodomainSemiImplicitCells::updateIionVecs(const Vectors &VCW) { vout(10).StartBlock("Update Iion "); std::vector<double> vcw(elphyModel.ElphySize()); for (row r = VCW[0].rows(); r != VCW[0].rows_end(); ++r) { - for (int j = 0; j < r.n(); ++j) { + for (int j = 0; j < r.NumberOfDofs(); ++j) { for (int i = 0; i < elphyModel.ElphySize(); i++) { vcw[i] = VCW[i](r, j); } @@ -655,13 +655,14 @@ void MonodomainSemiImplicitCellsIextPerCell::updateExternalCurrent(const Vector } void MonodomainSemiImplicitCellsIextPerCell::SetInitialValue(Vector &V) { - Iext_cells=std::make_unique<Vector>(0.0,*disc0); + Iext_cells=std::make_unique<Vector>(0.0,disc0);//stimmt das? + // vorher: Iext_cells=std::make_unique<Vector>(0.0,*disc0); Vector amplitude( V); Vector excitation(V); Vector duration( V); for (row r = (V).rows(); r != (V).rows_end(); ++r) { - for (int j = 0; j < r.n(); ++j) { + for (int j = 0; j < r.NumberOfDofs(); ++j) { amplitude(r,j)=Amplitude(ExcitationData(), r, j); excitation(r,j)=Excitation(ExcitationData(), r, j); duration(r,j)=Duration(ExcitationData(), r, j); diff --git a/src/electrophysiology/solvers/ElphySolver.cpp b/src/electrophysiology/solvers/ElphySolver.cpp index 75627c182..40eea2d4a 100644 --- a/src/electrophysiology/solvers/ElphySolver.cpp +++ b/src/electrophysiology/solvers/ElphySolver.cpp @@ -74,7 +74,7 @@ GetElphySolver(MCellModel &cellModel, const Vector &excitationData) { void ElphySolver::printVariableOnCells(IElphyAssemble &A,const Vector &var,const std::string &varname) const{ const Meshes &mesh = var.GetMeshes(); - LagrangeDiscretization disc0_var(mesh, 0, 1); + auto disc0_var = std::make_shared<LagrangeDiscretization>(mesh, 0, 1); Vector variable(disc0_var); variable=0; for(cell c= var.cells(); c != var.cells_end(); ++c){ -- GitLab