diff --git a/src/strikeslip/strikeslip-2D.cfg b/src/strikeslip/strikeslip-2D.cfg index 9fd7ce5c6f1c8915dbae29bd1404000179d0d73c..7fe09f4ea21bb07ef87c3d568fcfaf4b6ba74be6 100644 --- a/src/strikeslip/strikeslip-2D.cfg +++ b/src/strikeslip/strikeslip-2D.cfg @@ -1,12 +1,12 @@ # -*- mode:conf -*- [body0] -smallestDiameter = 0.02 # 2e-3 [m] +smallestDiameter = 1e-2 # 2e-3 [m] [body1] -smallestDiameter = 0.02 # 2e-3 [m] +smallestDiameter = 1e-2 # 2e-3 [m] [timeSteps] -refinementTolerance = 1e-3# 1e-5 +refinementTolerance = 1e-5 # 1e-5 [u0.solver] tolerance = 1e-8 @@ -18,7 +18,7 @@ tolerance = 1e-8 tolerance = 1e-8 [v.fpi] -tolerance = 1e-3 # 1e-5 +tolerance = 1e-9 # 1e-5 [solver.tnnmg.preconditioner.basesolver] tolerance = 1e-10 diff --git a/src/strikeslip/strikeslip.cc b/src/strikeslip/strikeslip.cc index 44f09f40c847693000f54ae08df6bdd918a169ac..ca99306b85a9e5e5e8c40e314d802f411099a2bb 100644 --- a/src/strikeslip/strikeslip.cc +++ b/src/strikeslip/strikeslip.cc @@ -72,6 +72,7 @@ #include <dune/tectonic/spatial-solving/solverfactory.hh> #include <dune/tectonic/time-stepping/adaptivetimestepper.hh> +#include <dune/tectonic/time-stepping/uniformtimestepper.hh> #include <dune/tectonic/time-stepping/rate.hh> #include <dune/tectonic/time-stepping/state.hh> #include <dune/tectonic/time-stepping/updaters.hh> @@ -118,7 +119,7 @@ int main(int argc, char *argv[]) { auto const parset = getParameters(argc, argv); auto outPath = std::filesystem::current_path(); - outPath += "/output/" + parset.get<std::string>("outPath"); + outPath += "/output/" + parset.get<std::string>("general.outPath"); if (!std::filesystem::is_directory(outPath)) std::filesystem::create_directories(outPath); @@ -178,11 +179,12 @@ int main(int argc, char *argv[]) { for (size_t i=0; i<bodyCount; i++) { nVertices[i] = contactNetwork.body(i)->nVertices(); } + print(nVertices, "#dofs: "); using MyProgramState = ProgramState<Vector, ScalarVector>; MyProgramState programState(nVertices); - IOHandler<Assembler, ContactNetwork> ioHandler(parset.sub("io"), contactNetwork); + IOHandler<Assembler, ContactNetwork, MyProgramState> ioHandler(parset.sub("io"), contactNetwork); bool restartRead = ioHandler.read(programState); if (!restartRead) { @@ -349,21 +351,25 @@ int main(int argc, char *argv[]) { stepBase(parset, contactNetwork, totalDirichletNodes, globalFriction, frictionNodes, externalForces, stateEnergyNorms); - AdaptiveTimeStepper<NonlinearFactory, std::decay_t<decltype(contactNetwork)>, Updaters, std::decay_t<decltype(stateEnergyNorms)>> + /*AdaptiveTimeStepper<NonlinearFactory, std::decay_t<decltype(contactNetwork)>, Updaters, std::decay_t<decltype(stateEnergyNorms)>> adaptiveTimeStepper(stepBase, contactNetwork, current, programState.relativeTime, programState.relativeTau, - mustRefine); + mustRefine);*/ - size_t timeSteps = parset.get<size_t>("timeSteps.timeSteps"); + UniformTimeStepper<NonlinearFactory, std::decay_t<decltype(contactNetwork)>, Updaters, std::decay_t<decltype(stateEnergyNorms)>> + timeStepper(stepBase, contactNetwork, current, + programState.relativeTime, programState.relativeTau); - while (!adaptiveTimeStepper.reachedEnd()) { + size_t timeSteps = std::round(parset.get<double>("timeSteps.timeSteps")); + + while (!timeStepper.reachedEnd()) { programState.timeStep++; //preconditioner.build(); - iterationCount = adaptiveTimeStepper.advance(); + iterationCount = timeStepper.advance(); - programState.relativeTime = adaptiveTimeStepper.relativeTime_; - programState.relativeTau = adaptiveTimeStepper.relativeTau_; + programState.relativeTime = timeStepper.relativeTime_; + programState.relativeTau = timeStepper.relativeTau_; current.rate_->extractDisplacement(programState.u); current.rate_->extractVelocity(programState.v); current.rate_->extractAcceleration(programState.a); diff --git a/src/strikeslip/strikeslip.cfg b/src/strikeslip/strikeslip.cfg index dc92ad1a31de62d61733a290073fe693d61e5c41..f373d429327b17af9833307c0d89af3d8ace4dda 100644 --- a/src/strikeslip/strikeslip.cfg +++ b/src/strikeslip/strikeslip.cfg @@ -1,54 +1,53 @@ -outPath = test # output written to ./output/strikeslip/outPath - -# -*- mode:conf -*- +[general] +outPath = friction # output written to ./output/strikeslip/outPath gravity = 0.0 # [m/s^2] [body0] length = 0.5 # [m] height = 0.5 # [m] depth = 0.12 # [m] -bulkModulus = 0.5e5 # [Pa] #2190 -poissonRatio = 0.3 # [1] #0.11 +bulkModulus = 64103 # [Pa] #2190 +poissonRatio = 0.11 # [1] #0.11 [body0.elastic] distFromDiag = 0.2 -density = 900 # [kg/m^3] #750 -shearViscosity = 1e3 # [Pas] -bulkViscosity = 1e3 # [Pas] +density = 130 # [kg/m^3] #750 +shearViscosity = 0.0 # [Pas] +bulkViscosity = 0.0 # [Pas] [body0.viscoelastic] -density = 1000 # [kg/m^3] -shearViscosity = 1e4 # [Pas] -bulkViscosity = 1e4 # [Pas] +density = 130 # [kg/m^3] +shearViscosity = 0.0 # [Pas] +bulkViscosity = 0.0 # [Pas] [body1] length = 0.5 # [m] height = 0.5 # [m] depth = 0.12 # [m] -bulkModulus = 1e5 # [Pa] -poissonRatio = 0.0 # [1] +bulkModulus = 64103 # [Pa] +poissonRatio = 0.11 # [1] [body1.elastic] distFromDiag = 0.2 -density = 900 # [kg/m^3] +density = 130 # [kg/m^3] shearViscosity = 0.0 # [Pas] bulkViscosity = 0.0 # [Pas] [body1.viscoelastic] -density = 1000 # [kg/m^3] +density = 130 # [kg/m^3] shearViscosity = 0.0 # [Pas] bulkViscosity = 0.0 # [Pas] [boundary.friction] -C = 10 # [Pa] -mu0 = 0.7 # [ ] -V0 = 5e-5 # [m/s] -L = 2.25e-5 # [m] +C = 6 # [Pa] +mu0 = 0.48 # [ ] +V0 = 1e-3 # [m/s] +L = 1e-6 # [m] initialAlpha = 0 # [ ] stateModel = AgeingLaw frictionModel = Truncated #Regularised [boundary.friction.weakening] -a = 0.002 # [ ] -b = 0.017 # [ ] +a = 0.054 # [ ] +b = 0.074 # [ ] [boundary.friction.strengthening] -a = 0.020 # [ ] -b = 0.005 # [ ] +a = 0.054 # [ ] +b = 0.074 # [ ] [boundary.neumann] sigmaN = 200.0 # [Pa] @@ -65,17 +64,17 @@ restarts.write = true #true vtk.write = true [problem] -finalTime = 100 # [s] #1000 +finalTime = 15 # [s] #1000 bodyCount = 2 [initialTime] timeStep = 0 relativeTime = 0.0 -relativeTau = 2e-2 # 1e-6 +relativeTau = 1e-4 # 1e-6 [timeSteps] scheme = newmark -timeSteps = 10 +timeSteps = 1e4 [u0.solver] maximumIterations = 100