Commit a713018b authored by Kevin Moreau's avatar Kevin Moreau

semi infinite notch in an infinite body



git-svn-id: https://svn.ec-nantes.fr/eXlibris/Applis/TLSDuctile@2345 fbbead7c-fb4d-4173-aa67-51132c73c120
parent 4e79314f
enable_testing()
add_test(infinite_dam_notch ${CMAKE_CURRENT_BINARY_DIR}/data/reference.py ${CMAKE_CURRENT_BINARY_DIR}/)
MATERIAL_CLASS = elastic_damage
NAME = truc
PLANE_STATE = plane_strain
YOUNG_MODULUS = 210.e9
POISSON_RATIO = 0.3
Y_CRIT = 1.32e5
HARDENING = exponential
HARDENING_COEFF = 2.
integ_order = 3
disp_space_type = PolyLagrange
disp_space_dim = V2Dxy
disp_space_order = 1
disp_bc_integ_order = 1
mean_field_space_type = PolyLagrange
damage_shape = Poly2Revert
lc = 1.
delta_phi_max_ratio = 0.99
do_forced_delocalization = 0
do_crack_cut = 1
fit_to_vertices_ratio = -1.e-2
nb_step_max = 999
export_manager = {
disp 10
eps_ref 10
strain 10
damage 10
sm_nonlocal 10
analytic_disp 1
analytic_strain 1
analytic_stress 1 }
export_sensors_label = { load_factor 1 force_y 1 singularity_exponent 1 }
export_sensors_point = { }
do_infinite_mapping = 1
do_post_pro_filtering = 1
infinite_mapping_offset = 1.e-4
notch_angle = 90.
internal_radius = 5.
external_radius = 6.5
MESH_FILE_TYPE = msh
PROCEDURE_PARAM_FILE = info.dat
MESH_FILE = mesh.msh
ZONE 101 = { MAT_CLASS = ElastoDam MAT_PARAM = mate.mat }
ZONE 102 = { MAT_CLASS = ElastoDam MAT_PARAM = mate.mat }
BC_LINE 11 = { DISPLACEMENT_X FIX = 0.
DISPLACEMENT_Y FIX = 0. }
// can be changed
r=5.;
R=1.3*r;
costheta=1./Sqrt(2.);
sintheta=1./Sqrt(2.);
Nn=30;
a=1.;
lc=1.;
lcmin=lc/Nn;
lcmax=10.*lcmin;
distmin=1.5*lc;
distmax=3.*lc;
Point(1) = {0, 0, 0, a};
Point(2) = {-r*costheta, r*sintheta, 0, a};
Point(3) = {r, 0, 0, a};
Point(4) = {-r*costheta, -r*sintheta, 0, a};
Point(5) = {-R*costheta, R*sintheta, 0, a};
Point(6) = {R, 0, 0, a};
Point(7) = {-R*costheta, -R*sintheta, 0, a};
Point(8) = {r-distmax, 0, 0, a};
Line(1) = {1, 2};
Line(2) = {2, 5};
Line(3) = {1, 4};
Line(4) = {4, 7};
Circle(5) = {2, 1, 3};
Circle(6) = {3, 1, 4};
Circle(7) = {5, 1, 6};
Circle(8) = {6, 1, 7};
Line(9) = {1, 8};
Line Loop(10) = {5, 6, -3, 1};
Plane Surface(11) = {10};
Line Loop(12) = {7, 8, -4, -6, -5, 2};
Plane Surface(13) = {12};
Physical Point(1) = {1};
Physical Line(11) = {7, 8};
Physical Surface(101) = {11};
Physical Surface(102) = {13};
Field[1]=Attractor;
Field[1].NNodesByEdge=Nn;
Field[1].EdgesList={9};
Field[2]=Threshold;
Field[2].IField=1;
Field[2].LcMin=lcmin;
Field[2].LcMax=lcmax;
Field[2].DistMin=distmin;
Field[2].DistMax=distmax;
Background Field=2;
#!/bin/python2
import sys, os
import re
import subprocess as sp
if len(sys.argv)!=2:
exit
loc=sys.argv[1]
dataloc=loc+"data/"
# first test, no superimposed strain
resloc=loc+"ref1/"
sp.call(["mkdir", "-p", resloc])
os.chdir(resloc)
sp.call(["cp", dataloc+"main.dat", "main.dat"])
sp.call(["cp", dataloc+"info.dat", "info.dat"])
sp.call(["cp", dataloc+"elasto_dam.mat", "mate.mat"])
sp.call(["cp", dataloc+"notch_infinite.geo", "mesh.geo"])
sp.call(["gmsh", "-2", "-format", "msh1", "mesh.geo"])
try:
f1=open("out.log", 'w')
p1=sp.Popen([loc+"dam_infinite_notch", "main.dat"], stdout=f1, stderr=f1)
except KeyboardInterrupt:
print "end"
# second test, superimposed strain
f=open(dataloc+"info.dat", 'r')
infodata=f.read()
f.close()
infodata+="superimposed_strain = (-0.0329670329670330,0.,0.,0.,0.0769230769230769,0.,0.,0.,0.)\n"
infodata+="do_superposition = 1\n"
f=open(dataloc+"main.dat", 'r')
maindata=f.read()
f.close()
maindata=re.sub("_R FIX = 0.0769230769230769", "_R FIX = 0.", maindata)
maindata=re.sub("_R FIX_AND_MEASURE = 0.0769230769230769", "_R FIX_AND_MEASURE = 0.", maindata)
resloc=loc+"ref2/"
sp.call(["mkdir", "-p", resloc])
os.chdir(resloc)
sp.call(["cp", dataloc+"elasto_dam.mat", "mate.mat"])
sp.call(["cp", dataloc+"notch_infinite.geo", "mesh.geo"])
sp.call(["gmsh", "-2", "-format", "msh1", "mesh.geo"])
f=open("info.dat", 'w')
f.write(infodata)
f.close()
f=open("main.dat", 'w')
f.write(maindata)
f.close()
try:
f2=open("out.log", 'w')
p2=sp.Popen([loc+"dam_infinite_notch", "main.dat"], stdout=f2, stderr=f2)
except KeyboardInterrupt:
print "end"
p1.wait()
p2.wait()
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment