View the mode shape of an eigen analysis
Moderators: silvia, selimgunay, Moderators
View the mode shape of an eigen analysis
Is this any way to draw the mode shape of an eigen analysis?
yes, but only with the latest version of OS.
put these procs into a file and then source it.
and call it with, in 3D:
for 2D:
you may need to define these global variables:
put these procs into a file and then source it.
Code: Select all
######################################################################################
## procDisplayPlane $ShapeType $dAmp $viewPlane $nEigen $quadrant
######################################################################################
proc procDisplayPlane {ShapeType dAmp viewPlane {nEigen 0} {quadrant 0}} {
######################################################################################
## setup display parameters for specified viewPlane
######################################################################################
#### -- by Silvia Mazzoni, 2006 (mazzoni@berkeley_NO_SPAM_.edu)
####
#### ShapeType : type of shape to display. # options: ModeShape , NodeNumbers , DeformedShape
#### dAmp : relative amplification factor for deformations
#### viewPlane : set local xy axes in global coordinates (XY,YX,XZ,ZX,YZ,ZY)
#### nEigen : if nEigen not=0, show mode shape for nEigen eigenvalue
#### quadrant: quadrant where to show this figure (0=full figure)
####
######################################################################################
set Xmin [lindex [nodeBounds] 0]; # view bounds in global coords - proc will add padding on the sides
set Ymin [lindex [nodeBounds] 1];
set Zmin [lindex [nodeBounds] 2];
set Xmax [lindex [nodeBounds] 3];
set Ymax [lindex [nodeBounds] 4];
set Zmax [lindex [nodeBounds] 5];
set Xo 0; # center of local viewing system
set Yo 0;
set Zo 0;
set uLocal [string index $viewPlane 0]; # viewPlane local-x axis in global coordinates
set vLocal [string index $viewPlane 1]; # viewPlane local-y axis in global coordinates
if {$viewPlane =="YZ" } {
set uMin $Ymin
set uMax $Ymax
set vMin $Zmin
set vMax $Zmax
set wMin $Xmin
set wMax $Xmax
} elseif {$viewPlane =="ZY" } {
set uMin $Zmin
set uMax $Zmax
set vMin $Ymin
set vMax $Ymax
set wMin $Xmin
set wMax $Xmax
} elseif {$viewPlane =="XY" } {
set uMin $Xmin
set uMax $Xmax
set vMin $Ymin
set vMax $Ymax
set wMin $Zmin
set wMax $Zmax
} elseif {$viewPlane =="YX" } {
set uMin $Ymin
set uMax $Ymax
set vMin $Xmin
set vMax $Xmax
set wMin $Zmin
set wMax $Zmax
} elseif {$viewPlane =="XZ" } {
set uMin $Xmin
set uMax $Xmax
set vMin $Zmin
set vMax $Zmax
set wMin $Ymin
set wMax $Ymax
} elseif {$viewPlane =="ZX" } {
set uMin $Zmin
set uMax $Zmax
set vMin $Xmin
set vMax $Xmax
set wMin $Ymin
set wMax $Ymax
} elseif {$viewPlane =="3D" } {
set uMin $Zmin+$Xmin
set uMax $Zmax+$Xmax
set vMin $Ymin
set vMax $Ymax
set wMin -10000
set wMax 10000
vup 0 1 0; # dirn defining up direction of view plane
} else {
return -1
}
set epsilon 1e-3; # make windows width or height not zero when the Max and Min values of a coordinate are the same
set uWide [expr $uMax - $uMin+$epsilon];
set vWide [expr $vMax - $vMin+$epsilon];
set uSide [expr 0.25*$uWide];
set vSide [expr 0.25*$vWide];
set uMin [expr $uMin - $uSide];
set uMax [expr $uMax + $uSide];
set vMin [expr $vMin - $vSide];
set vMax [expr $vMax + $vSide];
set uWide [expr $uMax - $uMin+$epsilon];
set vWide [expr $vMax - $vMin+$epsilon];
set uMid [expr ($uMin+$uMax)/2];
set vMid [expr ($vMin+$vMax)/2];
# keep the following general, as change the X and Y and Z for each view plane
# next three commmands define viewing system, all values in global coords
vrp $Xo $Yo $Zo; # point on the view plane in global coord, center of local viewing system
if {$vLocal == "X"} {
vup 1 0 0; # dirn defining up direction of view plane
} elseif {$vLocal == "Y"} {
vup 0 1 0; # dirn defining up direction of view plane
} elseif {$vLocal == "Z"} {
vup 0 0 1; # dirn defining up direction of view plane
}
if {$viewPlane =="YZ" } {
vpn 1 0 0; # direction of outward normal to view plane
prp 10000. $uMid $vMid ; # eye location in local coord sys defined by viewing system
plane 10000 -10000; # distance to front and back clipping planes from eye
} elseif {$viewPlane =="ZY" } {
vpn -1 0 0; # direction of outward normal to view plane
prp -10000. $vMid $uMid ; # eye location in local coord sys defined by viewing system
plane 10000 -10000; # distance to front and back clipping planes from eye
} elseif {$viewPlane =="XY" } {
vpn 0 0 1; # direction of outward normal to view plane
prp $uMid $vMid 10000; # eye location in local coord sys defined by viewing system
plane 10000 -10000; # distance to front and back clipping planes from eye
} elseif {$viewPlane =="YX" } {
vpn 0 0 -1; # direction of outward normal to view plane
prp $uMid $vMid -10000; # eye location in local coord sys defined by viewing system
plane 10000 -10000; # distance to front and back clipping planes from eye
} elseif {$viewPlane =="XZ" } {
vpn 0 -1 0; # direction of outward normal to view plane
prp $uMid -10000 $vMid ; # eye location in local coord sys defined by viewing system
plane 10000 -10000; # distance to front and back clipping planes from eye
} elseif {$viewPlane =="ZX" } {
vpn 0 1 0; # direction of outward normal to view plane
prp $uMid 10000 $vMid ; # eye location in local coord sys defined by viewing system
plane 10000 -10000; # distance to front and back clipping planes from eye
} elseif {$viewPlane =="3D" } {
vpn 1 0.25 1; # direction of outward normal to view plane
prp -100 $vMid 10000; # eye location in local coord sys defined by viewing system
plane 10000 -10000; # distance to front and back clipping planes from eye
} else {
return -1
}
# next three commands define view, all values in local coord system
if {$viewPlane =="3D" } {
viewWindow [expr $uMin-$uWide/4] [expr $uMax/2] [expr $vMin-0.25*$vWide] [expr $vMax]
} else {
viewWindow $uMin $uMax $vMin $vMax
}
projection 1; # projection mode, 0:prespective, 1: parallel
fill 1; # fill mode; needed only for solid elements
if {$quadrant == 0} {
port -1 1 -1 1 # area of window that will be drawn into (uMin,uMax,vMin,vMax);
} elseif {$quadrant == 1} {
port 0 1 0 1 # area of window that will be drawn into (uMin,uMax,vMin,vMax);
} elseif {$quadrant == 2} {
port -1 0 0 1 # area of window that will be drawn into (uMin,uMax,vMin,vMax);
} elseif {$quadrant == 3} {
port -1 0 -1 0 # area of window that will be drawn into (uMin,uMax,vMin,vMax);
} elseif {$quadrant == 4} {
port 0 1 -1 0 # area of window that will be drawn into (uMin,uMax,vMin,vMax);
}
if {$ShapeType == "ModeShape" } {
display -$nEigen 0 [expr 5.*$dAmp]; # display mode shape for mode $nEigen
} elseif {$ShapeType == "NodeNumbers" } {
display 1 -1 0 ; # display node numbers
} elseif {$ShapeType == "DeformedShape" } {
display 1 5 $dAmp; # display deformed shape
}
}; #
######################################################################################
######################################################################################
## procDisplayShape3D $ShapeType $dAmp $xLoc $yLoc $xPixels $yPixels $nEigen
######################################################################################
proc procDisplayShape3D { ShapeType {dAmp 5} {xLoc 10} {yLoc 10} {xPixels 750} {yPixels 600} {nEigen 1} } {
######################################################################################
## display Node Numbers, Deformed or Mode Shape in all 3 planes
######################################################################################
#### -- by Silvia Mazzoni, 2006 (mazzoni@berkeley_NO_SPAM_.edu)
####
#### ShapeType : type of shape to display. # options: ModeShape , NodeNumbers , DeformedShape
#### dAmp : relative amplification factor for deformations
#### xLoc,yLoc : horizontal & vertical location in pixels of graphical window (0,0=upper left-most corner)
#### xPixels,yPixels : width & height of graphical window in pixels
#### nEigen : if nEigen not=0, show mode shape for nEigen eigenvalue
####
#######################################################################################
global TunitTXT ; # load global unit variable
set Xmin [lindex [nodeBounds] 0]; # view bounds in global coords - proc will add padding on the sides
set Ymin [lindex [nodeBounds] 1];
set Zmin [lindex [nodeBounds] 2];
set Xmax [lindex [nodeBounds] 3];
set Ymax [lindex [nodeBounds] 4];
set Zmax [lindex [nodeBounds] 5];
if {$ShapeType == "ModeShape" } {
set lambdaN [eigen $nEigen]; # perform eigenvalue analysis for ModeShape
set lambda [lindex $lambdaN [expr $nEigen-1]];
set omega [expr pow($lambda,0.5)]
set PI [expr 2*asin(1.0)]; # define constant
set Tperiod [expr 2*$PI/$omega]; # period
set fmt1 "Mode Shape, Mode=%.1i Period=%.3f %s "
set windowTitle [format $fmt1 $nEigen $Tperiod $TunitTXT ]
} elseif {$ShapeType == "NodeNumbers" } {
set windowTitle "Node Numbers"
} elseif {$ShapeType == "DeformedShape" } {
set windowTitle0 "Deformed Shape "
}
if {$ShapeType == "DeformedShape" } {
set xPixels [expr int($xPixels/2)]
set yPixels [expr int($yPixels/2)]
set xLoc1 [expr $xLoc+$xPixels]
set yLoc1 [expr $yLoc+$yPixels]
set planeTXT "-Plane"
set viewPlane XY
set windowTitle $windowTitle0$viewPlane$planeTXT
recorder display $windowTitle $xLoc1 $yLoc $xPixels $yPixels -wipe ; # display recorder
procDisplayPlane $ShapeType $dAmp $viewPlane
set viewPlane ZY
set windowTitle $windowTitle0$viewPlane$planeTXT
recorder display $windowTitle $xLoc $yLoc $xPixels $yPixels -wipe ; # display recorder
procDisplayPlane $ShapeType $dAmp $viewPlane
set viewPlane ZX
set windowTitle $windowTitle0$viewPlane$planeTXT
recorder display $windowTitle $xLoc $yLoc1 $xPixels $yPixels -wipe ; # display recorder
procDisplayPlane $ShapeType $dAmp $viewPlane
set viewPlane 3D
set windowTitle $windowTitle0$viewPlane
recorder display $windowTitle $xLoc1 $yLoc1 $xPixels $yPixels -wipe ; # display recorder
procDisplayPlane $ShapeType $dAmp $viewPlane
} else {
recorder display $windowTitle $xLoc $yLoc $xPixels $yPixels -file $windowTitle -nowipe; # display recorder
set viewPlane XY
procDisplayPlane $ShapeType $dAmp $viewPlane $nEigen 1
set viewPlane ZY
procDisplayPlane $ShapeType $dAmp $viewPlane $nEigen 2
set viewPlane ZX
procDisplayPlane $ShapeType $dAmp $viewPlane $nEigen 3
set viewPlane 3D
procDisplayPlane $ShapeType $dAmp $viewPlane $nEigen 4
}
}; #
######################################################################################
######################################################################################
## procDisplayShape2D $ShapeType $dAmp $xLoc $yLoc $xPixels $yPixels $nEigen
######################################################################################
proc procDisplayShape2D { ShapeType {dAmp 5} {xLoc 10} {yLoc 10} {xPixels 750} {yPixels 600} {nEigen 0} } {
######################################################################################
## display Node Numbers, Deformed or Mode Shape in 2D problem
######################################################################################
#### -- by Silvia Mazzoni, 2006 (mazzoni@berkeley_NO_SPAM_.edu)
####
#### ShapeType : type of shape to display. # options: ModeShape , NodeNumbers , DeformedShape
#### dAmp : relative amplification factor for deformations
#### xLoc,yLoc : horizontal & vertical location in pixels of graphical window (0,0=upper left-most corner)
#### xPixels,yPixels : width & height of graphical window in pixels
#### nEigen : if nEigen not=0, show mode shape for nEigen eigenvalue
####
#######################################################################################
global TunitTXT
set Xmin [lindex [nodeBounds] 0]; # view bounds in global coords - proc will add padding on the sides
set Ymin [lindex [nodeBounds] 1];
set Zmin [lindex [nodeBounds] 2];
set Xmax [lindex [nodeBounds] 3];
set Ymax [lindex [nodeBounds] 4];
set Zmax [lindex [nodeBounds] 5];
if {$ShapeType == "ModeShape" } {
set lambdaN [eigen $nEigen]; # perform eigenvalue analysis for ModeShape
set lambda [lindex $lambdaN [expr $nEigen-1]];
set omega [expr pow($lambda,0.5)]
set PI [expr 2*asin(1.0)]; # define constant
set Tperiod [expr 2*$PI/$omega]; # period (sec.)
set fmt1 "Mode Shape, Mode=%.1i Period=%.3f %s "
set windowTitle [format $fmt1 $nEigen $Tperiod $TunitTXT]
} elseif {$ShapeType == "NodeNumbers" } {
set windowTitle "Node Numbers"
} elseif {$ShapeType == "DeformedShape" } {
set windowTitle "Deformed Shape"
}
set viewPlane XY
recorder display $windowTitle $xLoc $yLoc $xPixels $yPixels -wipe ; # display recorder
procDisplayPlane $ShapeType $dAmp $viewPlane $nEigen 0
}; #
######################################################################################
######################################################################################
## procDisplayDefaults $dAmp
######################################################################################
proc procDisplayAll { {dAmp 5} } {
######################################################################################
## display Node Numbers, Deformed AND Mode Shape using default values.
######################################################################################
# view model -- node numbers
global xPixels;
global yPixels;
global xLoc1;
global yLoc1;
global xLoc2;
global yLoc2;
global xLoc3;
global yLoc3;
# set dAmp 5; # relative amplification factor for deformations
set viewEigen 1; # eigenmode to be viewed
procDisplayShape2D DeformedShape $dAmp $xLoc1 $yLoc1 $xPixels $yPixels
procDisplayShape2D NodeNumbers $dAmp $xLoc2 $yLoc2 $xPixels $yPixels
procDisplayShape2D ModeShape $dAmp $xLoc3 $yLoc3 $xPixels $yPixels $viewEigen
}; #
######################################################################################
######################################################################################
## procDisplayDefaults $dAmp
######################################################################################
proc procDisplayDefoShape { {dAmp 5} } {
######################################################################################
## display Node Numbers, Deformed AND Mode Shape using default values.
######################################################################################
# view model -- node numbers
global xPixels;
global yPixels;
global xLoc1;
global yLoc1;
global xLoc2;
global yLoc2;
global xLoc3;
global yLoc3;
# set dAmp 5; # relative amplification factor for deformations
set viewEigen 1; # eigenmode to be viewed
procDisplayShape2D DeformedShape $dAmp $xLoc1 $yLoc1 800 600
}; #
######################################################################################
Code: Select all
# view of model
set xPixels 1000; # height of graphical window in pixels
set yPixels 600; # height of graphical window in pixels
set xLoc1 10; # horizontal location of graphical window (0=upper left-most corner)
set yLoc1 10; # vertical location of graphical window (0=upper left-most corner)
set xLoc2 $xLoc1; # horizontal location of graphical window (0=upper left-most corner)
set yLoc2 [expr $yLoc1+$yPixels]; # vertical location of graphical window (0=upper left-most corner)
set xLoc3 [expr $xLoc1+$xPixels]; # horizontal location of graphical window (0=upper left-most corner)
set yLoc3 $yLoc1; # vertical location of graphical window (0=upper left-most corner)
set dAmp 45; # relative amplification factor for deformations
set viewEigen 3; # eigenmode to be viewed
procDisplayShape3D DeformedShape $dAmp $xLoc1 $yLoc1 $xPixels $yPixels
procDisplayShape3D NodeNumbers $dAmp $xLoc2 $yLoc2 $xPixels $yPixels
procDisplayShape3D ModeShape $dAmp $xLoc3 $yLoc3 $xPixels $yPixels $viewEigen
Code: Select all
# view model -- node numbers
set xPixels 600; # height of graphical window in pixels
set yPixels 400; # height of graphical window in pixels
set xLoc1 10; # horizontal location of graphical window (0=upper left-most corner)
set yLoc1 10; # vertical location of graphical window (0=upper left-most corner)
set xLoc2 $xLoc1; # horizontal location of graphical window (0=upper left-most corner)
set yLoc2 [expr $yLoc1+$yPixels]; # vertical location of graphical window (0=upper left-most corner)
set xLoc3 [expr $xLoc1+$xPixels]; # horizontal location of graphical window (0=upper left-most corner)
set yLoc3 $yLoc1; # vertical location of graphical window (0=upper left-most corner)
set dAmp 5; # relative amplification factor for deformations
set viewEigen 3; # eigenmode to be viewed
procDisplayShape2D DeformedShape $dAmp $xLoc1 $yLoc1 $xPixels $yPixels
procDisplayShape2D NodeNumbers $dAmp $xLoc2 $yLoc2 $xPixels $yPixels
procDisplayShape2D ModeShape $dAmp $xLoc3 $yLoc3 $xPixels $yPixels $viewEigen
Code: Select all
# DISPLAY variables
variable xPixels 600; # height of graphical window in pixels
variable yPixels 400; # height of graphical window in pixels
variable xLoc1 10; # horizontal location of graphical window (0=upper left-most corner)
variable yLoc1 10; # vertical location of graphical window (0=upper left-most corner)
variable xLoc2 $xLoc1; # horizontal location of graphical window (0=upper left-most corner)
variable yLoc2 [expr $yLoc1+$yPixels]; # vertical location of graphical window (0=upper left-most corner)
variable xLoc3 [expr $xLoc1+$xPixels]; # horizontal location of graphical window (0=upper left-most corner)
variable yLoc3 $yLoc1; # vertical location of graphical window (0=upper left-most corner)
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Hello Silvia,
I just have run a simulation, static analysis, then obtain the first five eigenvalues and finally I have called the code listed above and the result are:
Four graphic windows appear and some points are plotted but on the console the following error appears.
WARNING ran out of memory - recorder display
WARNING could not add to domain recorder display
could not create recorder.
It is just curiosity but I thougth that you are not working on a graphical interface for Opensees.
Are you working on a postprocessor or also on a preprocessor.?.
Are you using public libraries or are you coding from scratch?.
I'm currently working on a preprocessor based on Opencascade (www.opencascade.org). It is quite similar to the OSP with some small additional features. I'm doing this as I encountered some errors on OSP and I have not found any support for it.
Could you please explain which is your intentions for a graphical interface?.
Thanks
I just have run a simulation, static analysis, then obtain the first five eigenvalues and finally I have called the code listed above and the result are:
Four graphic windows appear and some points are plotted but on the console the following error appears.
WARNING ran out of memory - recorder display
WARNING could not add to domain recorder display
could not create recorder.
It is just curiosity but I thougth that you are not working on a graphical interface for Opensees.
Are you working on a postprocessor or also on a preprocessor.?.
Are you using public libraries or are you coding from scratch?.
I'm currently working on a preprocessor based on Opencascade (www.opencascade.org). It is quite similar to the OSP with some small additional features. I'm doing this as I encountered some errors on OSP and I have not found any support for it.
Could you please explain which is your intentions for a graphical interface?.
Thanks
I found the error, please replace:
recorder display $windowTitle $xLoc $yLoc $xPixels $yPixels -file $windowTitle -nowipe; # display recorder
with
recorder display $windowTitle $xLoc $yLoc $xPixels $yPixels -nowipe; # display recorder
I had been trying to save to a file, failed, but forgot to remove the tag. this will work now!
i am not working on a pre/post processor. These are some commands Frank had incorporated for viewing the structure, but then moved on to something else. I thought I"d bring them back to life.
please let me know how your endeavor goes, i'd be interested in having a look.
recorder display $windowTitle $xLoc $yLoc $xPixels $yPixels -file $windowTitle -nowipe; # display recorder
with
recorder display $windowTitle $xLoc $yLoc $xPixels $yPixels -nowipe; # display recorder
I had been trying to save to a file, failed, but forgot to remove the tag. this will work now!
i am not working on a pre/post processor. These are some commands Frank had incorporated for viewing the structure, but then moved on to something else. I thought I"d bring them back to life.
please let me know how your endeavor goes, i'd be interested in having a look.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
-
- Posts: 109
- Joined: Sat May 05, 2007 12:28 pm
- Location: Houston, TX
Hi Silvia,
I'm trying to use the code above to visualize my 3D bridge model. When I run the simulation I get this error message:
can't read "TunitTXT" : no such variable
Can you tell me what this TunitTXT variable does? How can I make this error message go away?
Lastly, I call these procedures right after I do the eigen analysis right?
Thanks a lot,
I'm trying to use the code above to visualize my 3D bridge model. When I run the simulation I get this error message:
can't read "TunitTXT" : no such variable
Can you tell me what this TunitTXT variable does? How can I make this error message go away?
Lastly, I call these procedures right after I do the eigen analysis right?
Thanks a lot,
Bayram Aygun
Graduate Student, Civil&Env. Eng.
Rice University
Graduate Student, Civil&Env. Eng.
Rice University
-
- Posts: 109
- Joined: Sat May 05, 2007 12:28 pm
- Location: Houston, TX
No matter what I did, I couldn't visualize the mode shapes. I get an empty screen. Silvia can you please send a sample code where you actually used these procedures?
You can send the codes to:
<bayram_aygun@yahoo.com>
Thanks a lot,
You can send the codes to:
<bayram_aygun@yahoo.com>
Thanks a lot,
Bayram Aygun
Graduate Student, Civil&Env. Eng.
Rice University
Graduate Student, Civil&Env. Eng.
Rice University
it should be in the examples manual.
this was work that frank had started but had to stop, as a post-processor was not within the goals of his work. so you've got to take it for what it is.
this was work that frank had started but had to stop, as a post-processor was not within the goals of his work. so you've got to take it for what it is.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
I tried to view mode shapes for my 2D roof diaphragm analysis by using above code and I got error message saying "OpenSees.exe has encountered a problem and needs to close".
Error signature
AppName: opensees.exe AppVer: 0.0.0.0 ModName: ntdll.dll
ModVer: 5.1.2600.2180 Offset: 00001010
what might be causing the problem?
Error signature
AppName: opensees.exe AppVer: 0.0.0.0 ModName: ntdll.dll
ModVer: 5.1.2600.2180 Offset: 00001010
what might be causing the problem?
Kishor
Research Assitant
McGill University
Canada
Research Assitant
McGill University
Canada
Thank you!
But I got a window appered on screen where I can see the mode number and time period.
So I guess the problem might not be as your suggestion, "likely, you are asking for an element/object that doesn't exist". I may not be wright.
please comment for this.
thanking you!
But I got a window appered on screen where I can see the mode number and time period.
So I guess the problem might not be as your suggestion, "likely, you are asking for an element/object that doesn't exist". I may not be wright.
please comment for this.
thanking you!
Kishor
Research Assitant
McGill University
Canada
Research Assitant
McGill University
Canada
-
- Posts: 109
- Joined: Sat May 05, 2007 12:28 pm
- Location: Houston, TX
1) Go to http://opensees.berkeley.edu/OpenSees/user/tools.php
and download OpenSees Graphical Post Processor - OSP(download).
2) Run your simulation and which should create an ".eig" file at the end of running. This ".eig" file should contain a certain number of mode periods and the corresponding normalized (?) nodal displacements. Let's say if I have requested 20 modes to be analyzed and if I have 2300 nodes in my structural model my ".eig" file will contain a matrix of [20x2300] and will look like this:
Period Node1Delta Node2 Delta .....
3.1 0.001 0.002
2.8 ....................................
2.02 ........................................
etc.
Finally, after you download the OSP, you first open your structural model in OSP and then you open the corresponding ".eig" file . You will be able to visualize the mode shapes.
I hope the explanation is clear and helpful...
and download OpenSees Graphical Post Processor - OSP(download).
2) Run your simulation and which should create an ".eig" file at the end of running. This ".eig" file should contain a certain number of mode periods and the corresponding normalized (?) nodal displacements. Let's say if I have requested 20 modes to be analyzed and if I have 2300 nodes in my structural model my ".eig" file will contain a matrix of [20x2300] and will look like this:
Period Node1Delta Node2 Delta .....
3.1 0.001 0.002
2.8 ....................................
2.02 ........................................
etc.
Finally, after you download the OSP, you first open your structural model in OSP and then you open the corresponding ".eig" file . You will be able to visualize the mode shapes.
I hope the explanation is clear and helpful...
Bayram Aygun
Graduate Student, Civil&Env. Eng.
Rice University
Graduate Student, Civil&Env. Eng.
Rice University
-
- Posts: 109
- Joined: Sat May 05, 2007 12:28 pm
- Location: Houston, TX
#==========================================================================
# START OF ANALYSIS GENERATION FOR GRAVITY ANALYSIS
#==========================================================================
#
# Create the convergence test
test NormDispIncr 1.0e-8 50 1
#
algorithm Newton
#
integrator LoadControl .2 1 .2 .2
#
numberer RCM
#
constraints Penalty 9e15 9e15
#
analysis Static
#
#==========================================================================
# PERFORM GRAVITY LOAD ANALYSIS
#==========================================================================
#
analyze 5
#
loadConst -time 0.0
#
puts "################################################"
puts "Gravity Analysis Complete"
puts "################################################"
#
#==========================================================================
# PERFORM EIGEN ANALYSIS
#==========================================================================
#
set name Bayram_MSCS_WithActualandPseudoPiles_3D_fromScratch
set N 20
ModalAnalysis $N $name
# ModalAnalysis is a procedure which calculates the first 20 modes in this case. Below you'll see what the code for such a procedure looks like.
# START OF ANALYSIS GENERATION FOR GRAVITY ANALYSIS
#==========================================================================
#
# Create the convergence test
test NormDispIncr 1.0e-8 50 1
#
algorithm Newton
#
integrator LoadControl .2 1 .2 .2
#
numberer RCM
#
constraints Penalty 9e15 9e15
#
analysis Static
#
#==========================================================================
# PERFORM GRAVITY LOAD ANALYSIS
#==========================================================================
#
analyze 5
#
loadConst -time 0.0
#
puts "################################################"
puts "Gravity Analysis Complete"
puts "################################################"
#
#==========================================================================
# PERFORM EIGEN ANALYSIS
#==========================================================================
#
set name Bayram_MSCS_WithActualandPseudoPiles_3D_fromScratch
set N 20
ModalAnalysis $N $name
# ModalAnalysis is a procedure which calculates the first 20 modes in this case. Below you'll see what the code for such a procedure looks like.
Bayram Aygun
Graduate Student, Civil&Env. Eng.
Rice University
Graduate Student, Civil&Env. Eng.
Rice University