Skip to content
Snippets Groups Projects
Commit 11d8d836 authored by whimsial's avatar whimsial
Browse files

Resolved issue with incorect load direction

parent 3b0aeb00
Branches
No related tags found
No related merge requests found
...@@ -13,9 +13,9 @@ kwargs = {'x': 0, 'y': 0, 'index': 0, 'modelname': 'test', 'assembly': 0, ...@@ -13,9 +13,9 @@ kwargs = {'x': 0, 'y': 0, 'index': 0, 'modelname': 'test', 'assembly': 0,
'connectorE': 1500000000., 'connectorMu': 0.3, 'aMTnumber': 50, 'connectorE': 1500000000., 'connectorMu': 0.3, 'aMTnumber': 50,
'aMTlength': 2, 'springStiffness': 10, 'StepName': 'Standard_Buckling', 'aMTlength': 2, 'springStiffness': 10, 'StepName': 'Standard_Buckling',
'CompressiveLoad': 1} 'CompressiveLoad': 1}
kwargs = Interaction.create_interactions(**kwargs) kwargs, data = Interaction.create_interactions(**kwargs)
Step.Step(**kwargs) Step.Step(**kwargs)
LoadsAndBCs.create_load(**kwargs) LoadsAndBCs.create_load(data, **kwargs)
LoadsAndBCs.create_bc(**kwargs) LoadsAndBCs.create_bc(**kwargs)
generate_mesh.standard_mesh(**kwargs) generate_mesh.standard_mesh(**kwargs)
...@@ -14,16 +14,22 @@ def create_interactions(**kwargs): ...@@ -14,16 +14,22 @@ def create_interactions(**kwargs):
:param kwargs: object :param kwargs: object
:return: (object) kwargs :return: kwargs
:rtype: object
:return: data
:rtype: list
""" """
MTdata, aMTnames, kwargs = generate_assembly(**kwargs) MTdata, aMTnames, kwargs, data = generate_assembly(**kwargs)
kwargs.update(dict(ipMTnames=MTdata['MTnames'], aMTnames=aMTnames)) kwargs.update(dict(ipMTnames=MTdata['MTnames'], aMTnames=aMTnames))
CoupleIpMTsToSring(**kwargs) CoupleIpMTsToSring(**kwargs)
CoupleIpMTsToCentrosomes(**kwargs) CoupleIpMTsToCentrosomes(**kwargs)
CoupleAMTs(**kwargs) CoupleAMTs(**kwargs)
CoupleAMTsToCentrosomes(**kwargs) CoupleAMTsToCentrosomes(**kwargs)
return kwargs return kwargs, data
def CoupleIpMTsToSring(**kwargs): def CoupleIpMTsToSring(**kwargs):
......
...@@ -2,9 +2,13 @@ from abaqus import * ...@@ -2,9 +2,13 @@ from abaqus import *
from abaqusConstants import * from abaqusConstants import *
def create_load(**kwargs): def create_load(data, **kwargs):
""" """
Create and apply compressing load at each growing end of ipMT Create and apply compressing load at each connection between connectors and ipMTs
:param data: list containing all ipMTs and connectors of the model
:type data: list
:param kwargs: model parameters :param kwargs: model parameters
...@@ -17,35 +21,66 @@ def create_load(**kwargs): ...@@ -17,35 +21,66 @@ def create_load(**kwargs):
# Call the current assembly # Call the current assembly
modelname = kwargs['modelname'] modelname = kwargs['modelname']
a = mdb.models[modelname].rootAssembly a = mdb.models[modelname].rootAssembly
# Select the ipMTs by names and by pole
ipMTnames = kwargs['ipMTnames']
StepName = kwargs['StepName'] StepName = kwargs['StepName']
LoadVal = kwargs['CompressiveLoad'] LoadVal = kwargs['CompressiveLoad']
for i in range(len(ipMTnames)): # Select vertices to apply load
if i % 2 == 0: # Right pole # Iterate through unique ipMT names
v = a.instances[ipMTnames[i]].vertices mt_names = [sublist[0] for sublist in data]
loc = v[-1].pointOn mt_names = set(mt_names)
verts = v.findAt(loc, ) i = 0
region = a.Set(vertices=verts, name='ipMTtip-' + str(i)) for mtname in mt_names:
mdb.models[modelname].ConcentratedForce(name='Load-' + str(i), for sublist in data:
createStepName=StepName, if mtname == sublist[0]:
region=region, connector_end = sublist[3]
cf3=-LoadVal, connector_name = sublist[1]
distributionType=UNIFORM,
field='', # Select points that connect ipMTs with connectors
localCsys=None) ConnectorEnd = a.instances[connector_name].vertices[connector_end].pointOn
else: # Left pole loadPoint = a.instances[connector_name].vertices.findAt(ConnectorEnd, )
v = a.instances[ipMTnames[i]].vertices loadName = 'Load-' + connector_name + '-' + str(connector_end)
loc = v[-1].pointOn loadRegion = a.Set(vertices=loadPoint,
verts = v.findAt(loc, ) name=loadName)
region = a.Set(vertices=verts, name='ipMTtip-' + str(i)) if i % 2 == 0:
mdb.models[modelname].ConcentratedForce(name='Load-' + str(i), load = -LoadVal
else:
load = LoadVal
mdb.models[modelname].ConcentratedForce(name=loadName,
createStepName=StepName, createStepName=StepName,
region=region, region=loadRegion,
cf3=LoadVal, cf3=load,
distributionType=UNIFORM, distributionType=UNIFORM,
field='', field='',
localCsys=None) localCsys=None)
i += 1
# ipMTnames = kwargs['ipMTnames']
# StepName = kwargs['StepName']
# LoadVal = kwargs['CompressiveLoad']
# for i in range(len(ipMTnames)):
# if i % 2 == 0: # Right pole
# v = a.instances[ipMTnames[i]].vertices
# loc = v[-1].pointOn
# verts = v.findAt(loc, )
# region = a.Set(vertices=verts, name='ipMTtip-' + str(i))
# mdb.models[modelname].ConcentratedForce(name='Load-' + str(i),
# createStepName=StepName,
# region=region,
# cf3=-LoadVal,
# distributionType=UNIFORM,
# field='',
# localCsys=None)
# else: # Left pole
# v = a.instances[ipMTnames[i]].vertices
# loc = v[-1].pointOn
# verts = v.findAt(loc, )
# region = a.Set(vertices=verts, name='ipMTtip-' + str(i))
# mdb.models[modelname].ConcentratedForce(name='Load-' + str(i),
# createStepName=StepName,
# region=region,
# cf3=LoadVal,
# distributionType=UNIFORM,
# field='',
# localCsys=None)
def create_bc(**kwargs): def create_bc(**kwargs):
...@@ -72,3 +107,5 @@ def create_bc(**kwargs): ...@@ -72,3 +107,5 @@ def create_bc(**kwargs):
createStepName='Initial', createStepName='Initial',
region=region, region=region,
localCsys=None) localCsys=None)
# TODO: Apply load at the points linking connectors and ipMTs
...@@ -24,8 +24,8 @@ def generate_assembly(**kwargs): ...@@ -24,8 +24,8 @@ def generate_assembly(**kwargs):
create_model_assembly(**kwargs) create_model_assembly(**kwargs)
add_and_position_centrosomes(**kwargs) add_and_position_centrosomes(**kwargs)
aMTnames, kwargs = add_and_position_astral_mts(**kwargs) aMTnames, kwargs = add_and_position_astral_mts(**kwargs)
MTdata, kwargs = add_and_position_interpolar_mts_and_connectors(**kwargs) MTdata, kwargs, data = add_and_position_interpolar_mts_and_connectors(**kwargs)
return MTdata, aMTnames, kwargs return MTdata, aMTnames, kwargs, data
def create_model_assembly(**kwargs): def create_model_assembly(**kwargs):
...@@ -67,7 +67,7 @@ def add_and_position_interpolar_mts_and_connectors(**kwargs): ...@@ -67,7 +67,7 @@ def add_and_position_interpolar_mts_and_connectors(**kwargs):
MTdata, ConnectorData, data = assign_ipMTs(**kwargs) MTdata, ConnectorData, data = assign_ipMTs(**kwargs)
attach_connectors(data, **kwargs) attach_connectors(data, **kwargs)
kwargs.update(dict(MTdata=MTdata, ConnectorData=ConnectorData)) kwargs.update(dict(MTdata=MTdata, ConnectorData=ConnectorData))
return MTdata, kwargs return MTdata, kwargs, data
def add_and_position_astral_mts(**kwargs): def add_and_position_astral_mts(**kwargs):
......
...@@ -36,9 +36,9 @@ kwargs = {'x' : 0, ...@@ -36,9 +36,9 @@ kwargs = {'x' : 0,
'JobName' : 'Job-1'} 'JobName' : 'Job-1'}
''' Call model functions ''' ''' Call model functions '''
kwargs = Interaction.create_interactions(**kwargs) kwargs, data = Interaction.create_interactions(**kwargs)
Step.Step(**kwargs) Step.Step(**kwargs)
LoadsAndBCs.create_load(**kwargs) LoadsAndBCs.create_load(data, **kwargs)
LoadsAndBCs.create_bc(**kwargs) LoadsAndBCs.create_bc(**kwargs)
generate_mesh.standard_mesh(**kwargs) generate_mesh.standard_mesh(**kwargs)
...@@ -52,4 +52,6 @@ mdb.Job(name=name, model=modelname, description='', type=ANALYSIS, atTime=None, ...@@ -52,4 +52,6 @@ mdb.Job(name=name, model=modelname, description='', type=ANALYSIS, atTime=None,
modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='',
scratch='', resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=1, scratch='', resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=1,
numGPUs=0) numGPUs=0)
mdb.jobs[name].submit(consistencyChecking=OFF) # mdb.jobs[name].submit(consistencyChecking=OFF)
# TODO: Rerun documentation generation.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment