diff --git a/problems/cosserat-continuum-cantilever.parset b/problems/cosserat-continuum-cantilever.parset deleted file mode 100644 index ac1a07651c4e668550e5797e222e597df6073367..0000000000000000000000000000000000000000 --- a/problems/cosserat-continuum-cantilever.parset +++ /dev/null @@ -1,113 +0,0 @@ -############################################# -# Grid parameters -############################################# - -structuredGrid = cube - -# bounding box -lower = 0 0 -upper = 100 10 - -elements = 10 1 - -# Number of grid levels -numLevels = 1 - -############################################# -# Solver parameters -############################################# - -# Number of homotopy steps for the Dirichlet boundary conditions -numHomotopySteps = 1 - -# Solver type: trustRegion or proximalNewton -solvertype = trustRegion - -# Tolerance of the trust region solver -tolerance = 1e-3 - -# Max number of steps of the trust region solver -maxSolverSteps = 200 - -solverScaling = 1 1 1 0.01 0.01 0.01 - -# Initial trust-region radius -initialTrustRegionRadius = 3.125 - -# Number of multigrid iterations per trust-region step -numIt = 400 - -# Number of presmoothing steps -nu1 = 3 - -# Number of postsmoothing steps -nu2 = 3 - -# Number of coarse grid corrections -mu = 1 - -# Number of base solver iterations -baseIt = 1 - -# Tolerance of the multigrid solver -mgTolerance = 1e-5 - -# Tolerance of the base grid solver -baseTolerance = 1e-8 - -# Measure convergence -instrumented = 0 - -############################ -# Material parameters -############################ - - -## For the Wriggers L-shape example -[materialParameters] - -# shell thickness -thickness = 0.6 - -# Lame parameters -# corresponds to E = 71240 N/mm^2, nu=0.31 -# However, we use units N/m^2 -mu = 2.7191e+4 -lambda = 4.4364e+4 - -# Cosserat couple modulus -mu_c = 0 - -# Length scale parameter -L_c = 0.6 - -# Curvature exponent -q = 2 - -# Shear correction factor -kappa = 1 - -[] - -############################################# -# Boundary values -############################################# - -problem = cantilever - -### Python predicate specifying all Dirichlet grid vertices -# x is the vertex coordinate -dirichletVerticesPredicate = "x[0] < 0.01" - -### Python predicate specifying all Neumann grid vertices -# x is the vertex coordinate -neumannVerticesPredicate = "x[0] > 99.99" - -### Neumann values -neumannValues = 0 0 3 - -# Initial deformation -initialDeformation = "[x[0], x[1], 0]" - -#startFromFile = yes -#initialIterateFilename = initial_iterate.vtu diff --git a/problems/cosserat-continuum-cantilever.py b/problems/cosserat-continuum-cantilever.py new file mode 100644 index 0000000000000000000000000000000000000000..538adaa62213f07e520d0fb2c09bb07abdf47d3d --- /dev/null +++ b/problems/cosserat-continuum-cantilever.py @@ -0,0 +1,127 @@ +import math + +class ParameterSet(dict): + def __init__(self, *args, **kwargs): + super(ParameterSet, self).__init__(*args, **kwargs) + self.__dict__ = self + +parameterSet = ParameterSet() + + +############################################# +# Grid parameters +############################################# + +parameterSet.structuredGrid = "cube" + +# bounding box +parameterSet.lower = "0 0" +parameterSet.upper = "100 10" + +parameterSet.elements = "10 1" + +# Number of grid levels +parameterSet.numLevels = 1 + +############################################# +# Solver parameters +############################################# + +# Number of homotopy steps for the Dirichlet boundary conditions +parameterSet.numHomotopySteps = 1 + +# Solver type: "trustRegion" or "proximalNewton" +parameterSet.solvertype = "trustRegion" + +# Tolerance of the trust region solver +parameterSet.tolerance = 1e-3 + +# Max number of steps of the trust region solver +parameterSet.maxSolverSteps = 200 + +parameterSet.solverScaling = "1 1 1 0.01 0.01 0.01" + +# Initial trust-region radius +parameterSet.initialTrustRegionRadius = 3.125 + +# Number of multigrid iterations per trust-region step +parameterSet.numIt = 400 + +# Number of presmoothing steps +parameterSet.nu1 = 3 + +# Number of postsmoothing steps +parameterSet.nu2 = 3 + +# Number of coarse grid corrections +parameterSet.mu = 1 + +# Number of base solver iterations +parameterSet.baseIt = 1 + +# Tolerance of the multigrid solver +parameterSet.mgTolerance = 1e-5 + +# Tolerance of the base grid solver +parameterSet.baseTolerance = 1e-8 + +# Measure convergence +parameterSet.instrumented = 0 + +############################ +# Material parameters +############################ + +parameterSet.materialParameters = ParameterSet() + +# shell thickness +parameterSet.materialParameters.thickness = 0.6 + +# Lame parameters +# corresponds to E = 71240 N/mm^2, nu=0.31 +# However, we use units N/m^2 +parameterSet.materialParameters.mu = 2.7191e+4 +parameterSet.materialParameters["lambda"] = 4.4364e+4 + +# Cosserat couple modulus +parameterSet.materialParameters.mu_c = 0 + +# Length scale parameter +parameterSet.materialParameters.L_c = 0.6 + +# Curvature exponent +parameterSet.materialParameters.q = 2 + +# Shear correction factor +parameterSet.materialParameters.kappa = 1 + +# TODO: These three parameters are not actually used, +# but the current implementation requires them nevertheless. +parameterSet.materialParameters.b1 = 1 +parameterSet.materialParameters.b2 = 1 +parameterSet.materialParameters.b3 = 1 + + +############################################# +# Boundary values +############################################# + +parameterSet.problem = "cantilever" + +### Python predicate specifying all Dirichlet grid vertices +# x is the vertex coordinate +parameterSet.dirichletVerticesPredicate = "[x[0] < 0.01, x[0] < 0.01, x[0] < 0.01]" +parameterSet.dirichletRotationVerticesPredicate = "x[0] < 0.01" + +### Python predicate specifying all Neumann grid vertices +# x is the vertex coordinate +parameterSet.neumannVerticesPredicate = "x[0] > 99.99" + +### Neumann values +parameterSet.neumannValues = "0 0 3" + +# Initial deformation +parameterSet.initialDeformation = "[x[0], x[1], 0]" + +#parameterSet.startFromFile = yes +#parameterSet.initialIterateFilename = initial_iterate.vtu diff --git a/problems/cosserat-continuum-twisted-strip.parset b/problems/cosserat-continuum-twisted-strip.parset deleted file mode 100644 index 84cad73cd20f3b65a0c7c7ca72ac7921cc779749..0000000000000000000000000000000000000000 --- a/problems/cosserat-continuum-twisted-strip.parset +++ /dev/null @@ -1,105 +0,0 @@ -############################################# -# Grid parameters -############################################# - -structuredGrid = cube -lower = 0 -0.005 -upper = 0.1 0.005 -elements = 10 1 - -# Number of grid levels -numLevels = 1 - -############################################# -# Solver parameters -############################################# - -# Number of homotopy steps for the Dirichlet boundary conditions -numHomotopySteps = 24 - -# Tolerance of the trust region solver -tolerance = 1e-8 - -# Max number of steps of the trust region solver -maxSolverSteps = 200 - -solverScaling = 1 1 1 1 1 1 - -# Initial trust-region radius -initialTrustRegionRadius = 0.1 - -# Number of multigrid iterations per trust-region step -numIt = 200 - -# Number of presmoothing steps -nu1 = 3 - -# Number of postsmoothing steps -nu2 = 3 - -# Number of coarse grid corrections -mu = 1 - -# Number of base solver iterations -baseIt = 100 - -# Tolerance of the multigrid solver -mgTolerance = 1e-7 - -# Tolerance of the base grid solver -baseTolerance = 1e-8 - -# Measure convergence -instrumented = 0 - -############################ -# Material parameters -############################ - - -# Parameters for the twisted 0.1x0.01 strip -[materialParameters] - -# shell thickness -thickness = 0.002 - -# Lame parameters -# corresponds to E = 3.5GPa, nu=0.31 -mu = 5.6452e+09 -lambda = 2.1796e+09 - -# Cosserat couple modulus -mu_c = 0 - -# Length scale parameter -L_c = 2e-6 - -# Curvature exponent -q = 2 - -# Shear correction factor -kappa = 1 - -# TODO: These three parameters are not actually used, -# but the current implementation requires them nevertheless. -b1 = 1 -b2 = 1 -b3 = 1 - -[] - -############################################# -# Boundary values -############################################# - -problem = twisted-strip - -### Python predicate specifying all Dirichlet grid vertices -# x is the vertex coordinate -dirichletVerticesPredicate = "[x[0] < 0.001 or x[0] > 0.0999, x[0] < 0.001 or x[0] > 0.0999, x[0] < 0.001 or x[0] > 0.0999]" -dirichletRotationVerticesPredicate = "x[0] < 0.001 or x[0] > 0.0999" - -# Initial deformation -initialDeformation = "[x[0], x[1], 0]" - - diff --git a/problems/cosserat-continuum-twisted-strip.py b/problems/cosserat-continuum-twisted-strip.py new file mode 100644 index 0000000000000000000000000000000000000000..b8120ec67ce72cd82f6739de129d46f2634e5281 --- /dev/null +++ b/problems/cosserat-continuum-twisted-strip.py @@ -0,0 +1,116 @@ +import math + +class ParameterSet(dict): + def __init__(self, *args, **kwargs): + super(ParameterSet, self).__init__(*args, **kwargs) + self.__dict__ = self + +parameterSet = ParameterSet() + +############################################# +# Grid parameters +############################################# + +parameterSet.structuredGrid = "cube" +parameterSet.lower = "0 -0.005" +parameterSet.upper = "0.1 0.005" +parameterSet.elements = "10 1" + +# Number of grid levels +parameterSet.numLevels = 1 + +############################################# +# Solver parameters +############################################# + +# Number of homotopy steps for the Dirichlet boundary conditions +parameterSet.numHomotopySteps = 24 + +# Tolerance of the trust region solver +parameterSet.tolerance = 1e-8 + +# Max number of steps of the trust region solver +parameterSet.maxSolverSteps = 200 + +parameterSet.solverScaling = "1 1 1 1 1 1" + +# Initial trust-region radius +parameterSet.initialTrustRegionRadius = 0.1 + +# Number of multigrid iterations per trust-region step +parameterSet.numIt = 200 + +# Number of presmoothing steps +parameterSet.nu1 = 3 + +# Number of postsmoothing steps +parameterSet.nu2 = 3 + +# Number of coarse grid corrections +parameterSet.mu = 1 + +# Number of base solver iterations +parameterSet.baseIt = 100 + +# Tolerance of the multigrid solver +parameterSet.mgTolerance = 1e-7 + +# Tolerance of the base grid solver +parameterSet.baseTolerance = 1e-8 + +# Measure convergence +parameterSet.instrumented = 0 + +############################ +# Material parameters +############################ + + +# Parameters for the twisted 0.1x0.01 strip +parameterSet.materialParameters = ParameterSet() + +# shell thickness +parameterSet.materialParameters.thickness = 0.002 + +# Lame parameters +# corresponds to E = 3.5GPa, nu=0.31 +# (Notice that lambda is a key word in python such that +# we cannot use attribute syntax to set it but have to +# resort to dictionary syntax.) +parameterSet.materialParameters.mu = 5.6452e+09 +parameterSet.materialParameters['lambda'] = 2.1796e+09 + +# Cosserat couple modulus +parameterSet.materialParameters.mu_c = 0 + +# Length scale parameter +parameterSet.materialParameters.L_c = 2e-6 + +# Curvature exponent +parameterSet.materialParameters.q = 2 + +# Shear correction factor +parameterSet.materialParameters.kappa = 1 + +# TODO: These three parameters are not actually used, +# but the current implementation requires them nevertheless. +parameterSet.materialParameters.b1 = 1 +parameterSet.materialParameters.b2 = 1 +parameterSet.materialParameters.b3 = 1 + + +############################################# +# Boundary values +############################################# + +parameterSet.problem = "twisted-strip" + +### Python predicate specifying all Dirichlet grid vertices +# x is the vertex coordinate +parameterSet.dirichletVerticesPredicate = "[x[0] < 0.001 or x[0] > 0.0999, x[0] < 0.001 or x[0] > 0.0999, x[0] < 0.001 or x[0] > 0.0999]" +parameterSet.dirichletRotationVerticesPredicate = "x[0] < 0.001 or x[0] > 0.0999" + +# Initial deformation +parameterSet.initialDeformation = "[x[0], x[1], 0]" + + diff --git a/problems/cosserat-continuum-wong-pellegrino-wrinkling.parset b/problems/cosserat-continuum-wong-pellegrino-wrinkling.parset deleted file mode 100644 index 4af4a38d59003379a994bb2db4d246ac43351ceb..0000000000000000000000000000000000000000 --- a/problems/cosserat-continuum-wong-pellegrino-wrinkling.parset +++ /dev/null @@ -1,99 +0,0 @@ -############################################# -# Grid parameters -############################################# - -structuredGrid = true -lower = 0 0 -upper = 0.38 0.128 -elements = 15 5 - -# Number of grid levels -numLevels = 1 - -############################################# -# Solver parameters -############################################# - -# Number of homotopy steps for the Dirichlet boundary conditions -numHomotopySteps = 1 - -# Tolerance of the trust region solver -tolerance = 1e-8 - -# Max number of steps of the trust region solver -maxTrustRegionSteps = 500 - -solverScaling = 1 1 1 0.01 0.01 0.01 - -# Initial trust-region radius -initialTrustRegionRadius = 0.001 - -# Number of multigrid iterations per trust-region step -numIt = 200 - -# Number of presmoothing steps -nu1 = 3 - -# Number of postsmoothing steps -nu2 = 3 - -# Number of coarse grid corrections -mu = 1 - -# Number of base solver iterations -baseIt = 100 - -# Tolerance of the multigrid solver -mgTolerance = 1e-7 - -# Tolerance of the base grid solver -baseTolerance = 1e-8 - -# Measure convergence -instrumented = 0 - -############################ -# Material parameters -############################ - - -# Parameters for the shearing/wrinkling example from Wong/Pellegrino 2006 -# We use 'meters' as the length unit -[materialParameters] - -# shell thickness -thickness = 2.5e-5 - -# Lame parameters -# corresponds to E = 3.5GPa, nu=0.31 -mu = 5.6452e+09 -lambda = 2.1796e+09 - -# Cosserat couple modulus -mu_c = 0 - -# Length scale parameter -L_c = 2.5e-8 - -# Curvature exponent -q = 2 - -# Shear correction factor -kappa = 1 - -[] - -############################################# -# Boundary values -############################################# - -problem = wong-pellegrino - -### Python predicate specifying all Dirichlet grid vertices -# x is the vertex coordinate -dirichletVerticesPredicate = "x[1] < 0.0001 or x[1] > 0.128 - 0.0001" - -# Initial deformation -#startFromFile = true -initialIterateFilename = cosserat_iterate_2.vtu -initialDeformation = "[x[0] + 0.003*x[1] / 0.128, x[1], 0.002*math.cos(1e4*x[0])]" diff --git a/problems/cosserat-continuum-wong-pellegrino-wrinkling.py b/problems/cosserat-continuum-wong-pellegrino-wrinkling.py new file mode 100644 index 0000000000000000000000000000000000000000..cffce1393db4f18dbb0afcd16b1444d78ca49703 --- /dev/null +++ b/problems/cosserat-continuum-wong-pellegrino-wrinkling.py @@ -0,0 +1,115 @@ +import math + +class ParameterSet(dict): + def __init__(self, *args, **kwargs): + super(ParameterSet, self).__init__(*args, **kwargs) + self.__dict__ = self + +parameterSet = ParameterSet() + +############################################# +# Grid parameters +############################################# + +parameterSet.structuredGrid = "cube" +parameterSet.lower = "0 0" +parameterSet.upper = "0.38 0.128" +parameterSet.elements = "15 5" + +# Number of grid levels +parameterSet.numLevels = 1 + +############################################# +# Solver parameters +############################################# + +# Number of homotopy steps for the Dirichlet boundary conditions +parameterSet.numHomotopySteps = 1 + +# Tolerance of the trust region solver +parameterSet.tolerance = 1e-8 + +# Max number of steps of the trust region solver +parameterSet.maxSolverSteps = 500 + +parameterSet.solverScaling = "1 1 1 0.01 0.01 0.01" + +# Initial trust-region radius +parameterSet.initialTrustRegionRadius = 0.001 + +# Number of multigrid iterations per trust-region step +parameterSet.numIt = 200 + +# Number of presmoothing steps +parameterSet.nu1 = 3 + +# Number of postsmoothing steps +parameterSet.nu2 = 3 + +# Number of coarse grid corrections +parameterSet.mu = 1 + +# Number of base solver iterations +parameterSet.baseIt = 100 + +# Tolerance of the multigrid solver +parameterSet.mgTolerance = 1e-7 + +# Tolerance of the base grid solver +parameterSet.baseTolerance = 1e-8 + +# Measure convergence +parameterSet.instrumented = 0 + + +############################ +# Material parameters +############################ + + +# Parameters for the shearing/wrinkling example from Wong/Pellegrino 2006 +# We use 'meters' as the length unit +parameterSet.materialParameters = ParameterSet() + +# shell thickness +parameterSet.materialParameters.thickness = 2.5e-5 + +# Lame parameters +# corresponds to E = 3.5GPa, nu=0.31 +parameterSet.materialParameters.mu = 5.6452e+09 +parameterSet.materialParameters["lambda"] = 2.1796e+09 + +# Cosserat couple modulus +parameterSet.materialParameters.mu_c = 0 + +# Length scale parameter +parameterSet.materialParameters.L_c = 2.5e-8 + +# Curvature exponent +parameterSet.materialParameters.q = 2 + +# Shear correction factor +parameterSet.materialParameters.kappa = 1 + +# TODO: These three parameters are not actually used, +# but the current implementation requires them nevertheless. +parameterSet.materialParameters.b1 = 1 +parameterSet.materialParameters.b2 = 1 +parameterSet.materialParameters.b3 = 1 + + +############################################# +# Boundary values +############################################# + +parameterSet.problem = "wong-pellegrino" + +### Python predicate specifying all Dirichlet grid vertices +# x is the vertex coordinate +parameterSet.dirichletVerticesPredicate = "[x[1] < 0.0001 or x[1] > 0.128 - 0.0001, x[1] < 0.0001 or x[1] > 0.128 - 0.0001, x[1] < 0.0001 or x[1] > 0.128 - 0.0001]" +parameterSet.dirichletRotationVerticesPredicate = "x[1] < 0.0001 or x[1] > 0.128 - 0.0001" + +# Initial deformation +#parameterSet.startFromFile = True +parameterSet.initialIterateFilename = "cosserat_iterate_2.vtu" +parameterSet.initialDeformation = "[x[0] + 0.003*x[1] / 0.128, x[1], 0.002*math.cos(1e4*x[0])]" diff --git a/problems/cosserat-continuum-wriggers-l-shape.parset b/problems/cosserat-continuum-wriggers-l-shape.parset deleted file mode 100644 index 745f333600956d4c13e55af38ef37db5d6e7d74e..0000000000000000000000000000000000000000 --- a/problems/cosserat-continuum-wriggers-l-shape.parset +++ /dev/null @@ -1,108 +0,0 @@ -############################################# -# Grid parameters -############################################# - -structuredGrid = false -path = /home/sander/data/shells/wriggers_L_shape/ -gridFile = wriggers-L-shape_99_mm.msh - -# Number of grid levels -numLevels = 2 - -############################################# -# Solver parameters -############################################# - -# Number of homotopy steps for the Dirichlet boundary conditions -numHomotopySteps = 1 - -# Tolerance of the trust region solver -tolerance = 1e-8 - -# Max number of steps of the trust region solver -maxSolverSteps = 1000 - -solverScaling = 1 1 1 0.01 0.01 0.01 - -# Initial trust-region radius -initialTrustRegionRadius = 1 - -# Number of multigrid iterations per trust-region step -numIt = 200 - -# Number of presmoothing steps -nu1 = 3 - -# Number of postsmoothing steps -nu2 = 3 - -# Number of coarse grid corrections -mu = 1 - -# Number of base solver iterations -baseIt = 1 - -# Tolerance of the multigrid solver -mgTolerance = 1e-7 - -# Tolerance of the base grid solver -baseTolerance = 1e-8 - -# Measure convergence -instrumented = 0 - -############################ -# Material parameters -############################ - - -## For the Wriggers L-shape example -[materialParameters] - -# shell thickness -thickness = 0.6 - -# Lame parameters -# corresponds to E = 71240 N/mm^2, nu=0.31 -# However, we use units N/m^2 -mu = 2.7191e+4 -lambda = 4.4364e+4 - -# Cosserat couple modulus -mu_c = 0 - -# Length scale parameter -L_c = 0.6e-3 - -# Curvature exponent -q = 2 - -# Shear correction factor -kappa = 1 - -[] - -############################################# -# Boundary values -############################################# - -problem = wriggers-l-shape - -### Python predicate specifying all Dirichlet grid vertices -# x is the vertex coordinate -dirichletVerticesPredicate = "x[0] < 1" - -### Python predicate specifying all Dirichlet grid vertices -# x is the vertex coordinate -neumannVerticesPredicate = "x[1] < -239" - -### Neumann values, if needed -neumannValues = 0.09 0 0 - -# Initial deformation -#initialDeformation = "[x[0], x[1], 0 if (x[0] < 225 or x[1] < -15) else 0.001*(x[0]-225)*(x[1]+15)]" -##initialDeformation = "[x[0], x[1], 0]" - -startFromFile = yes -initialIterateGridFilename = wriggers-L-shape_99_mm.msh -initialIterateFilename = initial-wriggers-l-shape.vtu diff --git a/problems/cosserat-continuum-wriggers-l-shape.py b/problems/cosserat-continuum-wriggers-l-shape.py new file mode 100644 index 0000000000000000000000000000000000000000..0481d04466a84ccfd9cc49cc5abbf145e5527c26 --- /dev/null +++ b/problems/cosserat-continuum-wriggers-l-shape.py @@ -0,0 +1,121 @@ +import math + +class ParameterSet(dict): + def __init__(self, *args, **kwargs): + super(ParameterSet, self).__init__(*args, **kwargs) + self.__dict__ = self + +parameterSet = ParameterSet() + +############################################# +# Grid parameters +############################################# + +parameterSet.structuredGrid = "false" +parameterSet.path = "/home/sander/data/shells/wriggers_L_shape/" +parameterSet.gridFile = "wriggers-L-shape_99_mm.msh" + +# Number of grid levels +parameterSet.numLevels = 2 + +############################################# +# Solver parameters +############################################# + +# Number of homotopy steps for the Dirichlet boundary conditions +parameterSet.numHomotopySteps = 1 + +# Tolerance of the trust region solver +parameterSet.tolerance = 1e-8 + +# Max number of steps of the trust region solver +parameterSet.maxSolverSteps = 1000 + +parameterSet.solverScaling = "1 1 1 0.01 0.01 0.01" + +# Initial trust-region radius +parameterSet.initialTrustRegionRadius = 1 + +# Number of multigrid iterations per trust-region step +parameterSet.numIt = 200 + +# Number of presmoothing steps +parameterSet.nu1 = 3 + +# Number of postsmoothing steps +parameterSet.nu2 = 3 + +# Number of coarse grid corrections +parameterSet.mu = 1 + +# Number of base solver iterations +parameterSet.baseIt = 1 + +# Tolerance of the multigrid solver +parameterSet.mgTolerance = 1e-7 + +# Tolerance of the base grid solver +parameterSet.baseTolerance = 1e-8 + +# Measure convergence +parameterSet.instrumented = 0 + +############################ +# Material parameters +############################ + +parameterSet.materialParameters = ParameterSet() + +# shell thickness +parameterSet.materialParameters.thickness = 0.6 + +# Lame parameters +# corresponds to E = 71240 N/mm^2, nu=0.31 +# However, we use units N/m^2 +parameterSet.materialParameters.mu = 2.7191e+4 +parameterSet.materialParameters["lambda"] = 4.4364e+4 + +# Cosserat couple modulus +parameterSet.materialParameters.mu_c = 0 + +# Length scale parameter +parameterSet.materialParameters.L_c = 0.6e-3 + +# Curvature exponent +parameterSet.materialParameters.q = 2 + +# Shear correction factor +parameterSet.materialParameters.kappa = 1 + +# TODO: These three parameters are not actually used, +# but the current implementation requires them nevertheless. +parameterSet.materialParameters.b1 = 1 +parameterSet.materialParameters.b2 = 1 +parameterSet.materialParameters.b3 = 1 + + +############################################# +# Boundary values +############################################# + +parameterSet.problem = "wriggers-l-shape" + +### Python predicate specifying all Dirichlet grid vertices +# x is the vertex coordinate +parameterSet.dirichletVerticesPredicate = "[x[0] < 1, x[0] < 1, x[0] < 1]" +parameterSet.dirichletRotationVerticesPredicate = "x[0] < 1" + +### Python predicate specifying all Dirichlet grid vertices +# x is the vertex coordinate +parameterSet.neumannVerticesPredicate = "x[1] < -239" + +### Neumann values, if needed +parameterSet.neumannValues = "0.09 0 0" + +# Initial deformation +#parameterSet.initialDeformation = "[x[0], x[1], 0 if (x[0] < 225 or x[1] < -15) else 0.001*(x[0]-225)*(x[1]+15)]" +##parameterSet.initialDeformation = "[x[0], x[1], 0]" + +parameterSet.startFromFile = True +parameterSet.initialIterateGridFilename = "wriggers-L-shape_99_mm.msh" +parameterSet.initialIterateFilename = "initial-wriggers-l-shape.vtu" diff --git a/src/cosserat-continuum.cc b/src/cosserat-continuum.cc index f29ef2dc979d52dcb3e92b630d1b1e075c4f8b7a..2b5e301cdbf5ca15f979f4819e3d551cde3442cf 100644 --- a/src/cosserat-continuum.cc +++ b/src/cosserat-continuum.cc @@ -127,7 +127,7 @@ int main (int argc, char *argv[]) try // Start Python interpreter Python::start(); - Python::Reference main = Python::import("__main__"); + auto pyMain = Python::main(); Python::run("import math"); //feenableexcept(FE_INVALID); @@ -136,13 +136,12 @@ int main (int argc, char *argv[]) try << std::endl << "sys.path.append('" << argv[1] << "')" << std::endl; - using namespace TypeTree::Indices; - using SolutionType = TupleVector<std::vector<RealTuple<double,3> >, - std::vector<Rotation<double,3> > >; - // parse data file + auto pyModule = pyMain.import(argv[2]); + + // Get main parameter set ParameterTree parameterSet; - ParameterTreeParser::readINITree(argv[2], parameterSet); + pyModule.get("parameterSet").toC(parameterSet); ParameterTreeParser::readOptions(argc, argv, parameterSet); @@ -164,6 +163,10 @@ int main (int argc, char *argv[]) try const bool adolcScalarMode = parameterSet.get<bool>("adolcScalarMode", false); const std::string resultPath = parameterSet.get("resultPath", ""); + using namespace Dune::Indices; + using SolutionType = TupleVector<std::vector<RealTuple<double,3> >, + std::vector<Rotation<double,3> > >; + // /////////////////////////////////////// // Create the grid // ///////////////////////////////////////