Skip to content
Snippets Groups Projects
Commit 47270eff authored by Oliver Sander's avatar Oliver Sander Committed by sander
Browse files

write solutions and gradients

[[Imported from SVN: r533]]
parent 7cab1c63
No related branches found
No related tags found
No related merge requests found
...@@ -115,8 +115,8 @@ int main (int argc, char *argv[]) try ...@@ -115,8 +115,8 @@ int main (int argc, char *argv[]) try
VectorType corr; VectorType corr;
MatrixType hessianMatrix; MatrixType hessianMatrix;
RodAssembler<RodFuncSpaceType, 2> rodAssembler(*rodFuncSpace[maxlevel]); RodAssembler<RodFuncSpaceType, 4> rodAssembler(*rodFuncSpace[maxlevel]);
rodAssembler.setParameters(1, 10, 10); rodAssembler.setParameters(1, 100, 100);
MatrixIndexSet indices(numRodElements+1, numRodElements+1); MatrixIndexSet indices(numRodElements+1, numRodElements+1);
rodAssembler.getNeighborsPerVertex(indices); rodAssembler.getNeighborsPerVertex(indices);
...@@ -232,7 +232,7 @@ int main (int argc, char *argv[]) try ...@@ -232,7 +232,7 @@ int main (int argc, char *argv[]) try
IterativeSolver<MatrixType, VectorType> solver; IterativeSolver<MatrixType, VectorType> solver;
solver.iterationStep = &contactMMGStep; solver.iterationStep = &contactMMGStep;
solver.numIt = numIt; solver.numIt = numIt;
solver.verbosity_ = Solver::FULL; solver.verbosity_ = Solver::QUIET;
solver.errorNorm_ = &energyNorm; solver.errorNorm_ = &energyNorm;
solver.tolerance_ = tolerance; solver.tolerance_ = tolerance;
...@@ -254,6 +254,11 @@ int main (int argc, char *argv[]) try ...@@ -254,6 +254,11 @@ int main (int argc, char *argv[]) try
<< " new load increment: " << loadIncrement << std::endl; << " new load increment: " << loadIncrement << std::endl;
std::cout << "####################################################" << std::endl; std::cout << "####################################################" << std::endl;
// The continuation variable determines the material parameters
double A1 = loadFactor * 1000;
double A3 = loadFactor * 1000;
rodAssembler.setParameters(1, A1, A3);
// ///////////////////////////////////////////////////// // /////////////////////////////////////////////////////
// Newton Solver // Newton Solver
// ///////////////////////////////////////////////////// // /////////////////////////////////////////////////////
...@@ -316,11 +321,11 @@ int main (int argc, char *argv[]) try ...@@ -316,11 +321,11 @@ int main (int argc, char *argv[]) try
smallestEnergy = energy; smallestEnergy = energy;
smallestFactor = factor; smallestFactor = factor;
} }
//printf("factor: %g, energy: %g\n", factor, energy); printf("factor: %g, energy: %e\n", factor, energy);
} }
std::cout << "Damping factor: " << smallestFactor << std::endl; std::cout << "Damping factor: " << smallestFactor << std::endl;
//exit(0);
// Add correction to the current solution // Add correction to the current solution
x.axpy(smallestFactor, corr); x.axpy(smallestFactor, corr);
...@@ -340,18 +345,25 @@ int main (int argc, char *argv[]) try ...@@ -340,18 +345,25 @@ int main (int argc, char *argv[]) try
} }
// Write Lagrange multiplyers
std::stringstream a1AsAscii, a3AsAscii;
a1AsAscii << A1;
a3AsAscii << A3;
std::string lagrangeFilename = "pressure/lagrange_" + a1AsAscii.str() + "_" + a3AsAscii.str();
std::ofstream lagrangeFile(lagrangeFilename.c_str());
} while (loadFactor < 1); VectorType lagrangeMultipliers;
rodAssembler.assembleGradient(x, lagrangeMultipliers);
lagrangeFile << lagrangeMultipliers << std::endl;
// Write result grid
std::string solutionFilename = "solutions/rod_" + a1AsAscii.str()
+ "_" + a3AsAscii.str() + ".result";
writeRod(x, solutionFilename);
// Write result grid } while (loadFactor < 1);
writeRod(x, "rod.result");
// Write Lagrange multiplyers
std::ofstream lagrangeFile("lagrange");
VectorType lagrangeMultipliers;
rodAssembler.assembleGradient(x, lagrangeMultipliers);
lagrangeFile << lagrangeMultipliers << std::endl;
} catch (Exception e) { } catch (Exception e) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment