Skip to content

Instantly share code, notes, and snippets.

@zbounik
Created February 10, 2019 11:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zbounik/812ba1e8accbe8b66ea8b79c08048e2c to your computer and use it in GitHub Desktop.
Save zbounik/812ba1e8accbe8b66ea8b79c08048e2c to your computer and use it in GitHub Desktop.
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 23 13:13:55 2019
@author: zahra
"""
import Sofa
def createScene(rootNode):
rootNode.createObject('RequiredPlugin', name='SofaPython')
mySimulation = liverVolumeSurface(rootNode,[])
return 0;
class liverVolumeSurface (Sofa.PythonScriptController):
def initGraph(self,rootNode):
# rootNode
rootNode.createObject('DefaultPipeline', name='CollisionPipeline', verbose='0')
rootNode.createObject('BruteForceDetection', name='N2')
rootNode.createObject('DefaultContactManager', name='collision response', response='default')
rootNode.createObject('FreeMotionAnimationLoop')
rootNode.createObject('CollisionResponse', response='FrictionContact', responseParams='mu=0.9')
rootNode.createObject('DiscreteIntersection', name='discreteIntersection1')
rootNode.createObject('GenericConstraintSolver', maxIt='10000', tolerance='1e-7')
# rootNode.createObject('PythonScriptController', classname="controller", filename='liverSurface_controller.py')
# rootNode/Liver
Liver = rootNode.createChild('Liver')
Liver.depend = 'topo dofs'
Liver.createObject('EulerImplicitSolver', name='cg_odesolver', printLog='0')
Liver.createObject('CGLinearSolver', threshold='1e-09', tolerance='1e-09', name='linear solver', iterations='25', template='GraphScattered')
Liver.createObject('MeshGmshLoader', tetrahedraGroups=' -1 0 38144', name='loader', filename='/home/zahra/sofa/Work/Meshes/Liver/LiverStartFrom181/Exported/LV1.gmsh')
Liver.createObject('TetrahedronSetTopologyContainer', triangles='@loader.triangles', position='@loader.position', edges='@loader.edges', name='topo', tetrahedra='@loader.tetras')
Liver.createObject('MechanicalObject', force='0 0 0', name='dofs', template='Vec3d', position='@loader.position', velocity='0 0 0', externalForce='0 0 0', restScale='1')
Liver.createObject('UncoupledConstraintCorrection')
Liver.createObject('TetrahedronSetGeometryAlgorithms', drawColorEdges='0.4 1 0.298039 1', showIndicesScale='0.01', name='GeomAlgo', showPointIndices='1', template='Vec3d')
Liver.createObject('DiagonalMass', massDensity='1', name='computed using mass density', template='Vec3d')
Liver.createObject('TetrahedralCorotationalFEMForceField', poissonRatio='0.4', name='FEM', computeGlobalMatrix='0', method='large', template='Vec3d', youngModulus='120')
Liver.createObject('PlaneForceField', name='planeFF0', template='Vec3d', normal='0 1 0', stiffness='10000',draw='1', drawSize='8')
Liver.createObject('ConstantForceField', indices='27', name='constantFF0', template='Vec3d', forces='0 0 0')
# Liver.createObject('FixedConstraint', indices='0 1 6 22 26 11 12 31', drawSize='0', name='fixedConstraint0', template='Vec3d')
Liver.createObject('MeshExporter', exportEveryNumberOfSteps='0', quads='0', name='meshExporter3', format='gmsh', exportAtEnd='1', filename='/home/zahra/sofa/Work/Meshes/Liver/LiverStartFrom181/Exported/LV1_sofa', exportAtBegin='0', tetras='1', hexas='0', edges='0', triangles='0', listening='0')
Liver.createObject('TetrahedronSetTopologyModifier', name='tetrahedronSetTopologyModifier9')
Liver.createObject('TetrahedronSetTopologyAlgorithms', name='tetrahedronSetTopologyAlgorithms10', template='Vec3d')
# rootNode/Liver/surface_fine
surface_fine = Liver.createChild('surface_fine')
surface_fine.createObject('TriangleSetTopologyContainer', name='triangleSetTopologyContainer0')
surface_fine.createObject('TriangleSetTopologyModifier', name='triangleSetTopologyModifier1')
surface_fine.createObject('TriangleSetTopologyAlgorithms', name='triangleSetTopologyAlgorithms2', template='Vec3d')
surface_fine.createObject('TriangleSetGeometryAlgorithms', name='triangleSetGeometryAlgorithms3', template='Vec3d')
surface_fine.createObject('Tetra2TriangleTopologicalMapping', input='@../', name='tetra2TriangleTopologicalMapping4', output='@./')
# surface_fine.createObject('TriangularFEMForceField', name='triangularFEMFF5', template='Vec3d', poissonRatio='0.3', youngModulus='60')
# surface_fine.createObject('TriangularBendingSprings', name='triangularBendingSprings6', template='Vec3d')
# surface_fine.createObject('TTriangleModel', name='tTriangleModel15', template='Vec3d')
# surface_fine.createObject('TrianglePressureForceField', name='trianglePressureFF22', template='Vec3d')
surface_fine.createObject('MeshExporter', exportEveryNumberOfSteps='0', quads='0', name='meshExporter0', format='gmsh', exportAtEnd='1', filename='L1s_sofa', exportAtBegin='0', tetras='0', hexas='0', edges='0', triangles='1', listening='0')
# rootNode/Liver/surface_fine/visu_surface_fine
visu_surface_fine = surface_fine.createChild('visu_surface_fine')
visu_surface_fine.createObject('OglModel', sfactor='GL_SRC_ALPHA', blendEquation='GL_FUNC_ADD', name='oglModel18', template='ExtVec3f', dfactor='GL_ONE_MINUS_SRC_ALPHA', material='Default Diffuse 1 0.74902 0.74902 0.74902 1 Ambient 1 0.592157 0.2 0.2 1 Specular 0 1 1 1 1 Emissive 0 0 0 0 0 Shininess 0 45 ', primitiveType='DEFAULT')
visu_surface_fine.createObject('IdentityMapping', input='@../', name='identityMap20', template='Vec3d,ExtVec3f', output='@./')
return 0;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment