Dear Developers,
I was trying make use of OpenSeespy rendering module (Get_Rendering) after the new developments. I have put the post-processing commands into trial by using the very recent example provided by Mr. Anurag Upadhyay who is the main developer of the module I believe. I was hoping that you can help me to animate the response since I am getting an error related to matplotlib module. The example I am using and the associated error are given below. Thank you in advance.
Python File
import openseespy.postprocessing.Get_Rendering as opsplt
import openseespy.opensees as ops
#Define Nodes
ops.wipe()
ops.model('Basic', '-ndm', 3, '-ndf', 6)
ops.node(1 , 0.0, 1.0, 0.0)
ops.node(2 , 0.0, 0.5, 0.0)
ops.node(3 , 0.0, 0.0, 0.0)
ops.node(4 , 1.0, 1.0, 0.0)
ops.node(5 , 1.0, 0.5, 0.0)
ops.node(6 , 1.0, 0.0, 0.0)
ops.node(7 , 2.0, 1.0, 0.0)
ops.node(8 , 2.0, 0.5, 0.0)
ops.node(9 , 2.0, 0.0, 0.0)
ops.node(10, 3.0, 1.0, 0.0)
ops.node(11, 3.0, 0.5, 0.0)
ops.node(12, 3.0, 0.0, 0.0)
ops.node(13, 4.0, 1.0, 0.0)
ops.node(14, 4.0, 0.5, 0.0)
ops.node(15, 4.0, 0.0, 0.0)
ops.node(16, 5.0, 1.0, 0.0)
ops.node(17, 5.0, 0.5, 0.0)
ops.node(18, 5.0, 0.0, 0.0)
ops.node(19, 6.0, 1.0, 0.0)
ops.node(20, 6.0, 0.5, 0.0)
ops.node(21, 6.0, 0.0, 0.0)
ops.node(22, 7.0, 1.0, 0.0)
ops.node(23, 7.0, 0.5, 0.0)
ops.node(24, 7.0, 0.0, 0.0)
ops.node(25, 8.0, 1.0, 0.0)
ops.node(26, 8.0, 0.5, 0.0)
ops.node(27, 8.0, 0.0, 0.0)
ops.node(28, 9.0, 1.0, 0.0)
ops.node(29, 9.0, 0.5, 0.0)
ops.node(30, 9.0, 0.0, 0.0)
ops.node(31, 10.0,1.0, 0.0)
ops.node(32, 10.0,0.5, 0.0)
ops.node(33, 10.0,0.0, 0.0)
ops.fix(1,1,1,1,1,1,1)
ops.fix(2,1,1,1,1,1,1)
ops.fix(3,1,1,1,1,1,1)
#Define Materials
ops.nDMaterial('ElasticIsotropic', 2, 1.200E+006, 0.0)
ops.nDMaterial('PlateFiber',601,2)
ops.section('PlateFiber',701,601,0.1)
#Define Shell Elements
ops.element('ShellNLDKGQ', 1 , 2 , 5 , 4 , 1 ,701)
ops.element('ShellNLDKGQ', 2 , 3 , 6 , 5 , 2 ,701)
ops.element('ShellNLDKGQ', 3 , 5 , 8 , 7 , 4 ,701)
ops.element('ShellNLDKGQ', 4 , 6 , 9 , 8 , 5 ,701)
ops.element('ShellNLDKGQ', 5 , 8 , 11 , 10 , 7 ,701)
ops.element('ShellNLDKGQ', 6 , 9 , 12 , 11 , 8 ,701)
ops.element('ShellNLDKGQ', 7 , 11 , 14 , 13 , 10 ,701)
ops.element('ShellNLDKGQ', 8 , 12 , 15 , 14 , 11 ,701)
ops.element('ShellNLDKGQ', 9 , 14 , 17 , 16 , 13 ,701)
ops.element('ShellNLDKGQ', 10, 15, 18, 17, 14, 701)
ops.element('ShellNLDKGQ', 11, 17, 20, 19, 16, 701)
ops.element('ShellNLDKGQ', 12, 18, 21, 20, 17, 701)
ops.element('ShellNLDKGQ', 13, 20, 23, 22, 19, 701)
ops.element('ShellNLDKGQ', 14, 21, 24, 23, 20, 701)
ops.element('ShellNLDKGQ', 15, 23, 26, 25, 22, 701)
ops.element('ShellNLDKGQ', 16, 24, 27, 26, 23, 701)
ops.element('ShellNLDKGQ', 17, 26, 29, 28, 25, 701)
ops.element('ShellNLDKGQ', 18, 27, 30, 29, 26, 701)
ops.element('ShellNLDKGQ', 19, 29, 32, 31, 28, 701)
ops.element('ShellNLDKGQ', 20, 30, 33, 32, 29, 701)
##Create an output database to be read by opsenSeesPy visualization library
##Database name = CantiBeam_ODB, loadcase name = Push, recorded modeshapes = 0
opsplt.createODB("CantiBeam","Push",0)
#Define recorders
ops.recorder('Node', '-file', 'disp1.txt','-time','-nodeRange', 1, 33,'-dof', 1, 'disp')
ops.recorder('Node', '-file', 'disp3.txt','-time','-nodeRange', 1, 33,'-dof', 3, 'disp')
ops.recorder('Node', '-file', 'reaction1.txt',' -time','-nodeRange', 1, 3 ,'-dof', 1, 2, 3, 'reaction')
ops.record()
#Define loading
ops.timeSeries("Linear", 1)
ops.pattern('Plain', 1, 1)
ops.load(32, 0.0, 0.0, 0.0, 0,15.702963,0)
#Define analysis
ops.constraints('Plain')
ops.numberer('RCM')
ops.system('BandGeneral')
ops.test('NormDispIncr', 1e-3, 1000, 2)
ops.algorithm('KrylovNewton')
ops.integrator('LoadControl', 0.001)
ops.analysis('Static')
ops.analyze(4000)
ops.wipe()
opsplt.plot_model("node", Model="CantiBeam")
opsplt.plot_deformedshape(Model="CantiBeam",LoadCase="Push", overlap="no", tstep=2.0, scale=1.0)
opsplt.plot_deformedshape(Model="CantiBeam",LoadCase="Push", overlap="no", scale=1.0)
ani=opsplt.animate_deformedshape(Model="CantiBeam",LoadCase="Push",dt=0.01, scale=1, timeScale=10, Movie = "CantiBeam")
Error
Traceback (most recent call last):
File "C:\Users\Volkan\Desktop\trial\trial.py", line 101, in
ani=opsplt.animate_deformedshape(Model="CantiBeam",LoadCase="Push",dt=0.01, scale=1, timeScale=10, Movie = "CantiBeam")
File "C:\Users\Volkan\AppData\Roaming\Python\Python38\site-packages\openseespy\postprocessing\Get_Rendering.py", line 1070, in animate_deformedshape
ani.save(Movfile, writer='ffmpeg')
File "C:\Users\Volkan\anaconda3\lib\site-packages\matplotlib\animation.py", line 1109, in save
writer = alt_writer(
TypeError: 'str' object is not callable