PyJive workshop: stability of a house-shaped frame#
Case definition#
In this workshop, you are asked to set up your own problem and analyse it from different angles, using the FrameModel and different modules from pyJive as discussed in previous workshops. The case that is studied is the one illustrated below.

import matplotlib.pyplot as plt
import numpy as np
import os
import sys
pyjivepath = '../../../pyjive/'
sys.path.append(pyjivepath)
if not os.path.isfile(pyjivepath + 'utils/proputils.py'):
print('\n\n**pyjive cannot be found, adapt "pyjivepath" above or move notebook to appropriate folder**\n\n')
raise Exception('pyjive not found')
from utils import proputils as pu
import main
from names import GlobNames as gn
%matplotlib widget
Linear elastic analysis#
Define your own pair of geometry file and input file and perform a linear elastic analysis. You may have created these input files already for the FrameModel workshop. Make sure you are aware which module you are using, SolverModule is the most appropriate choice, NonlinModule may also be used for easier comparison with later simulations in this exercise.
props = pu.parse_file('house-linear.pro')
globdat = main.jive(props)
Storing results#
Below, a function is defined to looks up load-displacement data from globdat. The function is then called to store the data from the linear elastic analysis. This can later be used to compare the results from different analyses in a single diagram.
You may need to modify modify your input file and rerun the analysis for this function to work. Note that in order to record data for a particular node group, you need to specify this group in the loaddisp part of the .pro-file. You can find an example of this in the plastic hinges workshop.
def getFu(globdat):
F = abs(globdat['loaddisp']['top']['load']['dy'])
u = abs(globdat['loaddisp']['top']['disp']['dy'])
return np.hstack((np.zeros((2,1)), np.vstack((u,F))))
lin_elas = getFu(globdat)
Linear buckling analysis#
Now perform linear buckling analysis. You are recommended to make a new input file because several modifications need to be made.
props = pu.parse_file('house-lb.pro')
globdat = main.jive(props)
bucklingLoad = globdat[gn.LBFACTORS][0]
Geometrically nonlinear elastic analysis#
The next step is to perform geometrically nonlinear elastic analysis. Again, a new input file could be a good idea. How do the results compare to the results from linear buckling analysis (in terms of buckling load and buckling mode)?
props = pu.parse_file('house-nonlin.pro')
globdat = main.jive(props)
Geometrically linear elastic/plastic analysis#
Next, perform a geometrically linear analysis with plastic hinges. You could take the previous input file as starting point. Do think about how you want to define boundary conditions, displacement control, load control or arclength control. The choice you initially made for the previous analysis might not be the best choice here.
Geometrically nonlinear elastic/plastic analysis#
As last analysis, perform a complete nonlinear finite element simulation with geometric nonlinearity and plastic hinges.
Compare results#
Finally, compare the results from different analysis. Also include the rigid-plastic 2nd order analysis result (see pdf for background):
Suppose you want to check this analytical solution, what can you change to the model inputs to get more definite insight in its validity?