-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
ok, this is a very first brainstorming about what is needed to mimic Nastran handling of load cases, spcs (fixity) and mpcs
here it is put on the top of the analysis stage, and is completely not standard ... the idea is simply to explain what is needed and we start discussing from here
def Initialize():
#form the dofset
global_dof_set = ... 6 dofs --> Ndofs
R.shape = (ndof)
K.shape = (ndof,ndof)
assemble Kglobal
for spc in spcs: #fixities - in nastran it contains the load cases
fixity[spc.name] = ...
for mpc in mpcs:
...
for load in base_loadcases:
f = AssembleLoads....
load_database[load.name] = f
combined_loadcases = ...
spc_groups = ...group together similar spcs and mpcs
def InitializeSolutionStep(self):
for load_combination in load_combinations:
...
Kglobal dxglobal = Rglobal
dxeff = T * dxglobal + q #T and q take into account MPCs and SPCs
Keff = T^t @Kglobal@ T
Reff = T^t @ R
def RunSolutionLoop(self):
"""This function executes the solution loop of the AnalysisStage
It can be overridden by derived classes
"""
for spc in spc_groups:
T q
Keff
Keff_factors
for load in spc_loads[spc.name]:
self.InitializeSolutionStep() Reff
self._GetSolver().Predict()
is_converged = self._GetSolver().SolveSolutionStep()
self.__CheckIfSolveSolutionStepReturnsAValue(is_converged)
self.FinalizeSolutionStep()
self.OutputSolutionStep()
def OutputSolutionStep():
for out in outputs:
...Metadata
Metadata
Assignees
Labels
No labels