Attachment 'run_biomechanics_script.py'
#************************************************************
# Name: Roy Kerckhoffs
# email: roy@bioeng.ucsd.edu
# Category: Biomechanics
# Date: Sa 2 August 2008
# Description: Script to solve biomechanics problem in batch on granite
#
#************************************************************
import os
import sys
import numpy
parallel = 1
slu_dist = 0
fName = 'dog_normal'
initialTime = 0
steps_to_steadystate = 1.0
increment_to_steadystate = 2
simulations_to_steadystate = 0
steps_in_steadystate = 2.0
increment_in_steadystate = 1
simulations_in_steadystate = 300
iterations = 250
errorMaxsumsol = 1.0e-3
errorMaxresid = 1.0e-3
#define parameters
outputDir = '%s'%(fName)
try:
os.mkdir(outputDir)
except OSError:
sys.stderr.write("Warning %s already exists!\n"%outputDir)
#Load, send, and calculate mesh
self.Load_File('dog_normal_hillmod_bcl750.cont6',log=0)
self.Send(None, log=0)
self.CalcMesh([('Calculate', None), ('Do not Calculate', None), ('Calculate', None), ('Global arc length scale factors (for nodal derivs wrt arc lengths)', None)], log=0)
#Perform simulations
StartStep = int(initialTime/(steps_to_steadystate*increment_to_steadystate))
for simulation in range(StartStep+1,StartStep+simulations_to_steadystate+1):
finalTime = initialTime + increment_to_steadystate*steps_to_steadystate
self.Snonlin([steps_to_steadystate, iterations, increment_to_steadystate, initialTime, finalTime, errorMaxsumsol, errorMaxresid,1, {'delta':1e-6,'info': 'gui_biomechanics_sol', 'sol_tol': 10, 'linear_solver': 0, 'update_param': 0.0, 'solution_output': 1, 'parallel': parallel, 'parallelLinearSolver':slu_dist, 'Krylovi_subspace': 10, 'trans_routine': 0, 'min_i_eigen': 0.0, 'max_r_eigen': 0.0, 'max_i_eigen': 0.0, 'solver_iterations': 200, 'vector_output': 3, 'abort': 1, 'line_search': 1, 'stopping': 1, 'min_r_eigen': 0.0, 'additibe_const': 0.0, 'Newton_Raphson': 0, 'preconditioning': 0, 'equilibrium': 2}], log=0)
zp = self.server.model.bmprob.deform_global_param_ZP
if numpy.isnan(zp).any():
print "\nSorry, failed with NaN at step %d"%(simulation)
sys.exit(1)
initialTime = finalTime
#self.LstressAndStrain({'outputPath':"%s/stressandstrain_%s_%d.xls"%(outputDir, fName, simulation),'elemlist':[0],'inputPath':None,'varsWanted':['T', 'Fg_out', 'E_out'],'xilist':None}, log=0)
self.LnodalSolution(log=0, scripting = True, writeFile = "%s/nodes_%s_%d.xls"%(outputDir, fName, simulation))
StartStep = int(initialTime/(steps_in_steadystate*increment_in_steadystate))
for simulation in range(StartStep+1,StartStep+simulations_in_steadystate+1):
finalTime = initialTime + increment_in_steadystate*steps_in_steadystate
self.Snonlin([steps_in_steadystate, iterations, increment_in_steadystate, initialTime, finalTime, errorMaxsumsol, errorMaxresid,1, {'delta':1e-6,'info': 'gui_biomechanics_sol', 'sol_tol': 10, 'linear_solver': 0, 'update_param': 0.0, 'solution_output': 1, 'parallel': parallel, 'parallelLinearSolver':slu_dist, 'Krylovi_subspace': 10, 'trans_routine': 0, 'min_i_eigen': 0.0, 'max_r_eigen': 0.0, 'max_i_eigen': 0.0, 'solver_iterations': 200, 'vector_output': 3, 'abort': 1, 'line_search': 1, 'stopping': 1, 'min_r_eigen': 0.0, 'additibe_const': 0.0, 'Newton_Raphson': 0, 'preconditioning': 0, 'equilibrium': 2}], log=0)
zp = self.server.model.bmprob.deform_global_param_ZP
if numpy.isnan(zp).any():
print "\nSorry, failed with NaN at step %d"%(simulation)
sys.exit(1)
initialTime = finalTime
zeros = '0'*(4-len("%d"%simulation))
self.LstressAndStrain({'outputPath':"%s/stressandstrain_%s_%s%d.xls"%(outputDir, fName, zeros, simulation),'elemlist':None,'inputPath':None,'varsWanted':['T', 'Fg_out', 'E_out'],'xilist':None}, log=0)
self.LnodalSolution(log=0, scripting = True, writeFile = "%s/nodes_%s_%s%d.xls"%(outputDir, fName, zeros, simulation))
You are not allowed to view this page.
