View the mode shape of an eigen analysis

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Ahm
Posts: 11
Joined: Sun May 07, 2006 8:21 am

View the mode shape of an eigen analysis

Post by Ahm »

Is this any way to draw the mode shape of an eigen analysis?
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

yes, but only with the latest version of OS.
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
};                                                                                                                                                          #
######################################################################################
and call it with, in 3D:

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
for 2D:

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
you may need to define these global variables:

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
carlos
Posts: 23
Joined: Fri May 05, 2006 8:30 am
Location: Universidad Pais Vasco

Post by carlos »

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
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

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.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
bayram_aygun
Posts: 109
Joined: Sat May 05, 2007 12:28 pm
Location: Houston, TX

Post by bayram_aygun »

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,
Bayram Aygun
Graduate Student, Civil&Env. Eng.
Rice University
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

i believe it does the eigen analysis within.
the unitTXT are text variables i use for my units. just remove them.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
bayram_aygun
Posts: 109
Joined: Sat May 05, 2007 12:28 pm
Location: Houston, TX

Post by bayram_aygun »

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,
Bayram Aygun
Graduate Student, Civil&Env. Eng.
Rice University
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

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.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
kishor
Posts: 80
Joined: Wed Jan 24, 2007 6:35 pm
Location: McGIll University

Post by kishor »

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?
Kishor
Research Assitant
McGill University
Canada
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

likely, you are asking for an element/object that doesn't exist.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
kishor
Posts: 80
Joined: Wed Jan 24, 2007 6:35 pm
Location: McGIll University

Post by kishor »

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!
Kishor
Research Assitant
McGill University
Canada
silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia »

you are causing the program to crash somewhere, find out where by trakcing your input file.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
bayram_aygun
Posts: 109
Joined: Sat May 05, 2007 12:28 pm
Location: Houston, TX

Post by bayram_aygun »

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...
Bayram Aygun
Graduate Student, Civil&Env. Eng.
Rice University
kishor
Posts: 80
Joined: Wed Jan 24, 2007 6:35 pm
Location: McGIll University

Post by kishor »

Thank you!
Could you please tell me how to create an ".eig" file at the end of running?
Kishor
Research Assitant
McGill University
Canada
bayram_aygun
Posts: 109
Joined: Sat May 05, 2007 12:28 pm
Location: Houston, TX

Post by bayram_aygun »

#==========================================================================
# 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
Post Reply