Skip to content
Snippets Groups Projects
Select Git revision
  • 2e06cf0c20e0cfe5850353f2b200cd4b3d2e47f4
  • master default
  • cgnsUnstructured
  • partitioning
  • poppler
  • HighOrderBLCurving
  • gmsh_3_0_4
  • gmsh_3_0_3
  • gmsh_3_0_2
  • gmsh_3_0_1
  • gmsh_3_0_0
  • gmsh_2_16_0
  • gmsh_2_15_0
  • gmsh_2_14_1
  • gmsh_2_14_0
  • gmsh_2_13_2
  • gmsh_2_13_1
  • gmsh_2_12_0
  • gmsh_2_11_0
  • gmsh_2_10_1
  • gmsh_2_10_0
  • gmsh_2_9_3
  • gmsh_2_9_2
  • gmsh_2_9_1
  • gmsh_2_9_0
  • gmsh_2_8_6
26 results

project.pbxproj

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    run.py 3.94 KiB
    #coding-Utf-8-*-
    
    from gmshpy import *
    from dG3Dpy import*
    
    #script to launch PBC problem with a python script
    
    # material law
    Em = 3.2E3
    num = 0.3
    rho = 2.7e-9 # Bulk mass
    
    Ef = 3.2E5
    nuf = 0.3
    
    # creation of material law
    
    numLawEP = 11
    lawEP = dG3DLinearElasticMaterialLaw(numLawEP,rho,Em,num)
    numLawF =12
    lawF = dG3DLinearElasticMaterialLaw(numLawF,rho,Ef,nuf)
    
    # geometry
    geofile="rve.geo"
    meshfile="rve.msh" # name of mesh file
    
    # creation of part Domain
    myfieldEP = dG3DDomain(1000,1001,0,numLawEP,0)
    myfieldF = dG3DDomain(1000,1002,0,numLawF,0)
    beta1 = 1e5
    interfield1 = interDomainBetween3D(1000,myfieldEP,myfieldF,0)
    interfield1.stabilityParameters(beta1)
    
    # solver
    sol = 2  # Gmm=0 (default) Taucs=1 PETsc=2
    soltype =1 # StaticLinear=0 (default) StaticNonLinear=1
    nstep = 1  # number of step (used only if soltype=1)
    ftime =1.   # Final time (used only if soltype=1)
    tol=1.e-6  # relative tolerance for NR scheme (used only if soltype=1)
    nstepArch=1 # Number of step between 2 archiving (used only if soltype=1)
    system = 1 # Displacement elimination =0 Multiplier elimination = 1 Displacement+ multiplier = 2
    control = 0 # load control = 0 arc length control euler = 1
    
    # creation of Solver
    mysolver = nonLinearMechSolver(1000)
    mysolver.createModel(geofile,meshfile,3,1)
    mysolver.addDomain(myfieldEP)
    mysolver.addDomain(myfieldF)
    mysolver.addDomain(interfield1)
    mysolver.addMaterialLaw(lawEP)
    mysolver.addMaterialLaw(lawF)
    
    mysolver.Scheme(soltype)
    mysolver.Solver(sol)
    mysolver.snlData(nstep,ftime,tol)
    mysolver.setSystemType(system)
    mysolver.setControlType(control)
    mysolver.stiffnessModification(True)
    mysolver.iterativeProcedure(True)
    mysolver.setMessageView(True)
    
    
    
    #boundary condition
    microBC = nonLinearDisplacementBC(1000,3)
    microBC.setOrder(1)
    microBC.setBCPhysical(101,111,121,102,112,122) 
     # Deformation gradient
    microBC.setDeformationGradient(1.0,0.02,0.02,0.0,0.97,0,0,0,1.02)
    mysolver.addMicroBC(microBC)
    
    
    #stress averaging flag and averaging method 0- VOLUME, 1- SURFACE
    mysolver.stressAveragingFlag(True) # set stress averaging ON- 0 , OFF-1
    mysolver.setStressAveragingMethod(1) # 0 -volume 1- surface
    #tangent averaging flag
    mysolver.tangentAveragingFlag(True) # set tangent averaging ON -0, OFF -1
    mysolver.setTangentAveragingMethod(1,1e-6) # 0- perturbation 1- condensation
    
    #mysolver.setExtractPerturbationToFileFlag(0)	
    
    # build view
    mysolver.internalPointBuildView("Green-Lagrange_xx",IPField.STRAIN_XX, 1, 1);
    mysolver.internalPointBuildView("Green-Lagrange_yy",IPField.STRAIN_YY, 1, 1);
    mysolver.internalPointBuildView("Green-Lagrange_zz",IPField.STRAIN_ZZ, 1, 1);
    mysolver.internalPointBuildView("Green-Lagrange_xy",IPField.STRAIN_XY, 1, 1);
    mysolver.internalPointBuildView("Green-Lagrange_yz",IPField.STRAIN_YZ, 1, 1);
    mysolver.internalPointBuildView("Green-Lagrange_xz",IPField.STRAIN_XZ, 1, 1);
    mysolver.internalPointBuildView("sig_xx",IPField.SIG_XX, 1, 1);
    mysolver.internalPointBuildView("sig_yy",IPField.SIG_YY, 1, 1);
    mysolver.internalPointBuildView("sig_zz",IPField.SIG_ZZ, 1, 1);
    mysolver.internalPointBuildView("sig_xy",IPField.SIG_XY, 1, 1);
    mysolver.internalPointBuildView("sig_yz",IPField.SIG_YZ, 1, 1);
    mysolver.internalPointBuildView("sig_xz",IPField.SIG_XZ, 1, 1);
    mysolver.internalPointBuildView("sig_VM",IPField.SVM, 1, 1);
    mysolver.internalPointBuildView("Green-Lagrange equivalent strain",IPField.GL_EQUIVALENT_STRAIN, 1, 1);
    mysolver.internalPointBuildView("Equivalent plastic strain",IPField.PLASTICSTRAIN, 1, 1);
    
    
    # solve
    mysolver.solve()
    
    # test check
    check = TestCheck()
    check.equal(-1.033252e+02,mysolver.getHomogenizedStress(0,0),1.e-4)
    check.equal(6.149973e+02,mysolver.getHomogenizedStress(1,0),1.e-4)
    check.equal(1.905315e+03,mysolver.getHomogenizedStress(2,2),1.e-4)
    
    check.equal(8.328033e+04,mysolver.getHomogenizedTangent(0,0,0,0),1.e-4)
    check.equal(25140.8338148441,mysolver.getHomogenizedTangent(0,0,1,1),1.e-4)
    check.equal(3.076014e+04,mysolver.getHomogenizedTangent(0,1,0,1),1.e-4)
    check.equal(146738.461976739,mysolver.getHomogenizedTangent(2,2,2,2),1.e-4)