Select Git revision
viscoelast.cc
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
viscoelast.cc 13.61 KiB
#include <config.h>
#include <dune/common/bitsetvector.hh>
#include <dune/common/configparser.hh>
#include <dune/grid/uggrid.hh>
#include <dune/grid/io/file/amirameshwriter.hh>
#include <dune/grid/io/file/amirameshreader.hh>
#include <dune/istl/io.hh>
#include <dune/disc/operators/p1operator.hh>
#include <dune/ag-common/sampleonbitfield.hh>
#include <dune/ag-common/prolongboundarypatch.hh>
#include <dune/ag-common/readbitfield.hh>
#include <dune/ag-common/blockgsstep.hh>
#include <dune/ag-common/multigridstep.hh>
#include <dune/ag-common/transferoperators/compressedmultigridtransfer.hh>
#include <dune/ag-common/iterativesolver.hh>
#include <dune/ag-common/computestress.hh>
#include <dune/ag-common/neumannassembler.hh>
#include <dune/ag-common/norms/energynorm.hh>
#include <dune/ag-common/hierarchicestimator.hh>
#include <dune/disc/elasticity/linearelasticityassembler.hh>
#include "src/viscoelasticassembler.hh"
//#include <fstream>
//Using Maxwell-Voigt consititutive law for viscoelastic materials : stress = C * strain + N * strain_rate
// where C elasticitytensor
// N viscositytensor
// The grid dimension
const int dim = 3;
using namespace Dune;
int main (int argc, char *argv[]) try
{
// Some types that I need
typedef BCRSMatrix<FieldMatrix<double, dim, dim> > OperatorType;
typedef BlockVector<FieldVector<double, dim> > VectorType;
// parse data file
ConfigParser parameterSet;
parameterSet.parseFile("viscoelast.parset");
// read solver settings
const int minLevel = parameterSet.get<int>("minLevel");
const int maxLevel = parameterSet.get<int>("maxLevel");
const int numIt = parameterSet.get<int>("numIt");
const int nu1 = parameterSet.get<int>("nu1");
const int nu2 = parameterSet.get<int>("nu2");
const int mu = parameterSet.get<int>("mu");
const int baseIt = parameterSet.get<int>("baseIt");
const double tolerance = parameterSet.get<double>("tolerance");
const double baseTolerance = parameterSet.get<double>("baseTolerance");
const bool nestedIteration = parameterSet.get<int>("nestedIteration");
const bool paramBoundaries = parameterSet.get<int>("paramBoundaries");
const double timestep = parameterSet.get<double>("timestep");