Source code for job_parametric

"""
This script is designed to run the parametric studies with Spindle FEA. You can change ``nsamples`` variable
to control the number of jobs with identical parameters. ``Spring`` variable is the governing parameter of the study.
Its values are given in the corresponding list in this script. One can run parametric studies with any variable in
``kwargs`` by altering this script accordingly.
"""


[docs]def generateKwargs(spring, jobname, modelname): """ Function that generates kwargs for parametric analysis :param spring: Spring stiffness parameter :type spring: float :param jobname: Name of the current job :type jobname: str :param modelname: Name of the current model :type modelname: str :return: kwargs :rtype: object """ kwargs = {'x' : 0, 'y' : 0, 'index' : 0, 'modelname' : modelname, 'assembly' : 0, 'CentrosomeRadius': 0.20, 'CentrosomeLength': 0.40, 'CentrosomeE' : 1500000000.0, 'CentrosomeNu' : 0.3, 'ipMTnumber' : 6, 'lengthInterval' : [2, 5], 'separation' : [0.02876, 0.0414], 'angle' : [96.39, 11.12], 'd' : 0.015, 'D' : 0.025, 'ElasticModulus' : 1500000000.0, 'PoissonRatio' : 0.3, 'spindleLength' : 10, 'Nconnectors' : 20, 'connectorRadius' : 0.001, 'connectorE' : 1500000000., 'connectorNu' : 0.3, 'aMTnumber' : 40, 'aMTlength' : 2, 'aMTsSpring' : spring, 'groundSpring' : spring, 'StepName' : 'Standard_Buckling', 'NumberOfEigs' : 5, 'CompressiveLoad' : 1, 'JobName' : jobname} return kwargs
[docs]def jobSubmit(**kwargs): """ Function to submit the job to Abaqus solver :param kwargs: model parameters :type kwargs: object :return: Null :rtype: Null """ name = kwargs['JobName'] modelname = kwargs['modelname'] mdb.Job(name=name, model=modelname, description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=1, numGPUs=0) mdb.jobs[name].submit(consistencyChecking=OFF) mdb.jobs[name].waitForCompletion()
if __name__ == '__main__': from abaqus import * from abaqusConstants import * from LoadCase import Interaction from LoadCase import Step from LoadCase import LoadsAndBCs from SpindleMesh import generate_mesh import numpy as np ''' Governing parameters ''' spring = [1, 2, 5, 10, 15, 20, 40, 80, 100, 150, 200] nsamples = 5 modelname = [['spring_%s_%s' % (i, j) for j in range(nsamples)] for i in spring] jobname = [['job_%s_%s' % (i, j) for j in range(nsamples)] for i in spring] ''' Loop over parameters ''' for i in range(np.shape(jobname)[1]): for j in range(np.shape(jobname)[0]): kwargs = generateKwargs(spring=spring[j], modelname=modelname[j][i], jobname=jobname[j][i]) ''' Call modules ''' kwargs, data = Interaction.create_interactions(**kwargs) Step.Step(**kwargs) LoadsAndBCs.create_load(data, **kwargs) LoadsAndBCs.create_bc(**kwargs) generate_mesh.standard_mesh(**kwargs) ''' Create and submit a job ''' jobSubmit(**kwargs)