OpenSees in NextFEM Designer

setup and resources

OpenSees is not included with NextFEM Designer. To be able to perform analyses within NextFEM Designer with OpenSees, set it as the default solver from the Tools / Options / Solvers form. By downloading the OpenSees software from the official website, the user accepts its license under his own responsibility. By copying OpenSees.exe into the NextFEM Designer installation folder, the solver path option is filled in automatically.

Fiber sections

NextFEM Designer supports fiber model writing for steel and reinforced concrete frame structures. You can also specify the quality of the mesh to be imposed on the section. This feature is free, available to all users and can also be used for professional purposes.

IMPORTANT: To use modal and response spectrum analyses and plastic hinges, ActiveTcl 8.6 must be installed and added to path. If can use a simple OpenSees.exe once you installed Tcl libraries.

Loads handling

NextFEM Designer is able to convert any kind of load into OpenSees-supported loading. For instance, you can use in your model distributed moments along beams, edge and surface loads for planar elements and even volume loads; Designer will always produce a compatible sets of sp/eleLoad/load in the OpenSees model.

For thermal distorsion loads, NextFEM Designer can tranform the load into forces to be applied to 3D beam and shell elements, for displacement and stress consistency.

Results handling

Results read from recorders can be imported automatically by specifying the kind of data.

Obviously, when analysis is directly handled by NextFEM Designer, results are imported automatically.

In addition, NextFEM Designer carries-out further operations in post-processing results:

– for beam elements, results are avaialble only at the ends of the element; NextFEM Designer can shown a continuous diagrams for internal forces by using the command “Results / More output stations

– for shell and solid elements, stress/force recovery at nodes is performed automatically, hence you can read stresses and forces directly at nodes instead of reading Gauss points.

Exporting TCL model

By command “Export“, the TCL model can be exported for free, since this is covered by the basic version of NextFEM Designer. In this way you can obtain automatically fiber sections, loads conditions and analysis sequence (e.g. static performed before a dynamic analysis). The provided TCL output is commented to improve its readability.

To convert it to OpenSeesPy, please use toOpenSeesPy.py in the official OpenSees repo.

Advanced usage

A collection of OpenSees procedures is shipped with NextFEM Designer, in the file named “procedureXXX.tcl” in the installation folder. NextFEM provides for free use some procedures and the Response Spectrum and UmfPack2 libraries, made available to the public as described below.

See the manual for pre- and post-processing
See the manual for Response Spectrum analysis library

Response Spectrum analysis for OpenSees
To perform a Response Spectrum analysis based on modal results, use the following command:

dynModal $numModes $spectrum $patternID $comb $csi $dir1 $dir2 $dir3

where $numModes is the number of modes the user wants to combine, $spectrum is the name of the file containing the spectrum points, $patternID is the ID to be given to the load patterns created internally to perform the required linear static analyses, $comb let the user choose whether the SRSS or CQC method should be used, $csi is the damping ratio which is used to calculate the correlation coefficients needed when performing CQC.
The last three parameters ($dir1, $dir2, $dir3), which may assume a value of 0 or 1, are needed to specify the directions associated with the spectrum.

You need to install ActiveTCL 8.6 before to use it.

64 bit – updated 8th Feb 2022 – OpenSees 3.2.1 and above

NOTE: you can find an updated version of Response Spectrum library inside the NextFEM Designer 64bit installation.

UmfPack2 solver for OpenSees
Beta version. External solver for OpenSees (any version) which improves the integrated UmfPack. Memory and speed improvements up to 70%; no need to set the LValueFact anymore. Tested with OpenSees 2.4.6.

You need to install ActiveTCL before to use it.

Usage inside Tcl scripts:

system umfpack2
32 bit –


64 bit –

NextFEM Designer ​​ - Use with OpenSees

User’s (short) guide

 

NextFEM Designer can act as a pre- and post- processor for OpenSees.

You can import any of your .tcl models with the command File / Import …. (not Import OpenSees results, this will be used to recorders’ output!) or by dragging the file into the viewport.

This tutorial will use the following portal frame as driving example:

# SET UP ----------------------------------------------------------------------

# units: kN, m, sec

wipe;        ​​​​  # clear opensees model

# import procedure008.tcl supplied with NextFEM Designer

source procedure008.tcl

# required by procedures - they can run also for parallel analysis

set pid 0

file mkdir data;        ​​ ​​​​ # create data directory

model basic -ndm 3 -ndf 6; ​​ # 2 dimensions, 3 dof per node

set modelName "frame_ex"; # model name, best if equal to .tcl filename

 

# define GEOMETRY -------------------------------------------------------------

set LCol 3.0;    # column length

set LBeam 6.0;   # beam length

set Weight 1000.;   # superstructure weight

 

# mechanical properties

set fyk  [expr 235*pow(10,3)]

set ftk   [expr 360*pow(10,3)]

set Es  [expr 210000*pow(10,3)]

set gammaM0 [expr 1.05]

set fyd  [expr $fyk/$gammaM0]

 

# calculated parameters

set PCol $Weight;     # nodal dead-load weight per column

set g 9.81;       ​​ ​​ ​​ ​​​​ # g acceleration

set Mass [expr $PCol/$g];   # nodal mass

 

# calculated geometry parameters

set A  [expr 53.83*pow(10,-4)];   # cross-sectional area

set Iy  [expr 3692.0*pow(10,-8)];  # Column moment of inertia

set Iz  [expr 1336.0*pow(10,-8)]

set d  [expr 190.0*pow(10,-3)]

set bf  [expr 200.0*pow(10,-3)]

set tw  [expr 6.5*pow(10,-3)]

set tf  [expr 10.0*pow(10,-3)]

 

# nodal coordinates:

node 1 0 0 0;   # node coords. X, Y, Z

node 2 0 $LCol ​​ 0  

node 3 $LBeam 0 0

node 4 $LBeam $LCol 0

 

# Single point constraints -- Boundary Conditions

fix 1 1 1 1 1 1 1;    # node DX DY RZ

fix 3 1 1 1 1 1 1;

fix 2 0 0 1 1 1 0

fix 4 0 0 1 1 1 0

 

# nodal masses:

mass 2 $Mass $Mass 0. 0 0 0;  # node#, Mx My Mz, Mass=Weight/g, neglect rotational inertia at nodes

mass 4 $Mass $Mass 0. 0 0 0

 

# Define ELEMENTS & SECTIONS -------------------------------------------------------------

set HE200A 1;  # assign a tag number to the column section

set HE200ATemp 2

 

# MATERIAL parameters -------------------------------------------------------------------

set steelMatID 1;      # material ID tag

 

# -----------

set fyk  [expr 275*pow(10,3)]

set ftk   [expr 430*pow(10,3)]

set Es  [expr 210000*pow(10,3)]

set nus  [expr 0.3]

set Gs  [expr $Es/2/(1+$nus)]

set Gammas [expr 78.5/pow(10,0)]

set gammaM0 [expr 1.05]

set fyd  [expr $fyk/$gammaM0]

set Bs 0.01;      # strain-hardening ratio

set R0 18;      # control the transition from elastic to plastic branches

set cR1 0.925;      # control the transition from elastic to plastic branches

set cR2 0.15;      # control the transition from elastic to plastic branches

 

uniaxialMaterial Steel02 $steelMatID $fyd $Es $Bs $R0 $cR1 $cR2;    # Menegotto-Pinto model

 

# FIBER SECTION properties -------------------------------------------------------------

 

set nfdw 5;       # number of fibers along web depth

set nftw 2;       # number of fibers along web thickness

set nfbf 5;        # number of fibers along flange width

set nftf 2;        # number of fibers along flange thickness

 ​​​​ 

​​ set dw [expr $d - 2 * $tf]

​​ set y1 [expr -$d/2]

​​ set y2 [expr -$dw/2]

​​ set y3 [expr ​​ $dw/2]

​​ set y4 [expr ​​ $d/2]

 ​​​​ 

​​ set z1 [expr -$bf/2]

​​ set z2 [expr -$tw/2]

​​ set z3 [expr ​​ $tw/2]

​​ set z4 [expr ​​ $bf/2]

 ​​​​ 

#  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 

section fiberSec ​​ $HE200ATemp {

 ​​ ​​ ​​ ​​​​ # ​​ nfIJ  ​​ ​​​​ nfJK  ​​​​ yI  ​​ ​​ ​​​​ zI  ​​​​   yJ  ​​ ​​​​ zJ  ​​ ​​ ​​ ​​ ​​ ​​​​ yK  ​​​​ zK  ​​ ​​ ​​ ​​​​ yL  ​​ ​​​​ zL

patch quadr ​​ $steelMatID $nfbf $nftf ​​   $y1 $z4  ​​​​ $y1 $z1  ​​​​ $y2 $z1  ​​​​ $y2 $z4

patch quadr ​​ $steelMatID $nftw $nfdw  ​​ ​​ ​​​​ $y2 $z3  ​​​​ $y2 $z2  ​​​​ $y3 $z2  ​​​​ $y3 $z3

patch quadr ​​ $steelMatID $nfbf $nftf ​​   $y3 $z4  ​​​​ $y3 $z1  ​​​​ $y4 $z1  ​​​​ $y4 $z4

 ​​​​ }

set string1 P

set string2 Mz

set string3 Vy

section Aggregator $HE200A $steelMatID $string1 $steelMatID $string2 $steelMatID $string3 -section $HE200ATemp

 

# define geometric transformation: performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system

set ColTransfTag 1;    # associate a tag to column transformation

geomTransf Linear $ColTransfTag 0 0 1 ;

set BeamTransfTag 2;    # associate a tag to column transformation

geomTransf Linear $BeamTransfTag 0 0 1 ;

 

# element connectivity:

set numIntgrPts 5;           # number of integration points for force-based element

element nonlinearBeamColumn 1 1 2 $numIntgrPts $HE200A $ColTransfTag;# self-explanatory when using variables

element nonlinearBeamColumn 2 3 4 $numIntgrPts $HE200A $ColTransfTag

element nonlinearBeamColumn 3 2 4 $numIntgrPts $HE200A $BeamTransfTag

 

# define GRAVITY LOAD -------------------------------------------------------------

pattern Plain 1 Linear {

 ​​ ​​​​ eleLoad -ele 3 -type -beamUniform -20 0; # distributed superstructure-weight on beam

}

 

# define damping proportional to masses and to 1st mode

MDamping 0.05 1

 

# parameters for the subsequent analyses

set Tol 1.0e-3;   # convergence tolerance for test

set Tmax   15.0

set dt   0.005

set filePath "record10.30.dat"; # string with the 2 columns plain text seismic record

set ampl   1

set dir   1

 

# non-linear static analysis for applying vertical loads

NonLinearStatic $Tol 0.1 10 $modelName

# modal analysis

Modal 3 1 $modelName 1

# dynamic analysis

DynamicAn $Tmax $dt $filePath 1 $dir $Tol $ampl $modelName

 

The procedure file procedure008.tcl has to be placed in the same folder of your .tcl model and can be imported with the command

source procedure008.tcl

 

and it contains a series of scripts for setting the analysis quickly, without specifying and studying in deep the parameters to set.

IMPORTANT: the given procedures work for any kind of model. Despite that, NextFEM Designer can read recorders generated by 3D models only (6 dofs per node).

All procedures are given with no warranty and no support; feel free to modify and use them by citing nextfem.it website.

All procedures require modelName, that is a string parameters specifying the name assigned to the model, which is at your will. To properly use NextFEM Designer as a post-processor, set a modelName equal to the name of the .tcl file.

The most common commands in the procedure file are:

  • LinearStatic “modelName”
    to run a static linear analysis with a simgle load increment
    .

  • NonLinearStatic $tol $step $nsteps “modelName”
    to perform a non-linear static analysis
    using load control.

    • # tol  :sets the convergence tolerance

    • # step  :the step size

    • # nsteps:total number of steps

  • Modal $n $wr “modelName” ​​ $args
    performs an eigen analysis.

    • # n   :the number of modes to be found

    • # wr  :a flag that, if set to 1, allows to write eigenvalues and periods to file. Any other value does nothing.

    • # args : OPTIONAL argument. Put 1 if you want this procedure to create recorders. This is may be useful to import the deformed shapes in NextFEM Designer.

    • #Put any other value if the eigen analysis is functional to other types of analysis e.g. adaptive pushover and do not want it to overwrite results over and over.

  • Pushover $patternStart $type $mode $nodes $masses $cnode $cdof $tol $step $nsteps $modelName $checkProc
    performs a pushover analysis.

    • # patternStart:The first free tag. This proc uses patternStart and patternStart+1 IDs to create load patterns.

    • # type:used to define the type of distribution: 1 - mode shaped load pattern, 2 - mass proportional load pattern.

    • # mode:mode required for type 1 load distribution. Ignored for type 2 load distribution.

    • # nodes: list of nodes where lateral loads are applied.

    • # masses: list of masses. One per node. Should be in the same order of $nodes argument.

    • # cnode:control node. It is the node where the displacement is imposed.

    • # cdof:control dof. The direction of the imposed displacement.

    • # tol:convergence tolerance.

    • # step:step size.

    • # nsteps:number of steps.

  • SetDamping $flag $csi $args
    Sets model damping ratios.

    • # flag:defines damping type.

      • # 0: mass proportional damping. First mode is set as control mode.

      • # 1: mass proportional damping. $args contains the control mode.

      • # 2: Rayleigh damping. $args contains two control modes

      • #any other values causes an error.

    • # csi:damping ratio

    • # args:variable length argument. Contains the modes used to build the damping matrix.

  • MDamping $csi $modeI
    Builds mass proportional damping matrix.

    • #csi :damping ratio

    • #modeI: control mode

  • DynamicAn $Tmax $dt $filePath $patternStart $dir $TolDynamic $ampl $modelName
    Performs a time-history dynamic analysis.

    • # Tmax:analysis length.

    • # dt:reference step

    • # filePath:file containing time-acceleration pairs.

    • # patternStart:The first free tag. This proc uses patternStart and patternStart+1 IDs to create load patterns.

    • # dir:motion direction

    • # TolDynamic:convergence tolerance.

    • # ampl:accelerogram scale factor.

To import results in NextFEM Designer, select File / Import OpenSees results. The following mask will be shown:

Tick the checkboxes showed above to import the eigen results (with deformed shapes) and results from the dynamic analysis.

You will ​​ be able also to see beam diagrams, if available in the recorders.

 

Download the example from here: frame_ex

 

 

 

 

 

 

NextFEM

rSpectrum for OpenSees
User’s manual

 

Version C

 

© NextFEM 2015-2020

 

 

INDEX

 

 

  •  

  • Description

The Response Spectrum library for OpenSees 3.2.1 is available on www.nextfem.it/it/opensees-tools/

Such library accepts as input a response spectrum (defined in period T vs. acceleration Sa) and calculates the response in terms of displacements, reactions on restrained nodes and element forces. The acceleration must consistent with the model units.

The library is version-specific – supported OpenSees versions are 2.5.0, 3.0.3 and 3.2.1.

 

  • General usage

To use the commands described below, you must pre-emptively load the DLL with the command:

loadPackage rSpectrum ​​ ; # load the dll with the new commands

Response Spectrum Analysis (RSA) performs the following steps:

  • Reading the input spectra,

  • Performing an Eigen analysis,

  • Computation of participation factors,

  • Creation of load patterns starting from modal forces and spectral information,

  • Performing a linear elastic analysis and response retrieval,

  • Modal combination (CQC or SRSS).

 

Steps 3 to 5 need to be repeated for each mode and excitation direction the user wants to consider. Thus, this type of analysis may become expensive when performed for large models as the responses for each mode and direction should be stored and then combined.

 

  • Commands in Response Spectrum Library

WARNING: all the subsequent command example are available in the rSpectrum.dll. To use them from the OpenSees prompt, you have to load a model and to load the DLL with the command:

loadPackage rSpectrum; # load the dll with the new commands

IMPORTANT: place the DLL in the same folder of the model.

IMPORTANT: Such last command can be issued only when the model command has been given (e.g. model BasicBuilder -ndm 3 -ndf 6).

 

    • pFactors

 

The Tcl command purposely created for this purpose is pFactors whose syntax is the following:

pFactors <-file filename> -m $numMode <-v> <-s> <-o>

where $numModes is the number of modes the user wants to consider, -v sets the verbose mode and the optional flag –file saves the results to a file named filename.

 

pFactors calculates:

 1) Participation factors

 2) Participating masses

 3) Participating mass ratios

 -file flag is optional. it redirect the function output to a file. -s flag must not be set.";

 -m flag is mandatory and must be followed by an integer flag.

 It defines for how many modes the command has to calculate the results.

 -v flag is optional. It enables the verbose mode to check the progress.

 -s flag is optional. If set, matrix results won't be displayed to screen or written to file.

 -o flag is optional. It disables the output to a variable.

 Without this flag you can write something like:

 set results [pFactors -m $numModes]

 pFactors also stores M*phi to allow the retrieval with getMphi command (useful for RSA);

 The output given by this command is a list structured as follows:

 {1} {2} {3}  ​​​​ where each number represent one the three groups of values

 described above. Each list is made up of $numModes lists:

 {0} ...{i} ...{$numModes-1}

 Each one of these lists contains ndf values, where ndf is the number of dofs

 per node:

 0-th value ​​ 1-st value ​​ ...j-th value ​​ ...(ndf-1)th value

 

The output file “factors.dat” contains:

 

1) Participation factors

2) Participating masses (in units consistent with the model)

3) Participating mass ratios

 

    • printG

printG is an alias of pFactors, and can be useful to print again the previously computed values.

printG <-d> -m $numMode <-v> <-s> <-o>

 

    • printK

It prints the dense stiffness matrix of the model.

printK <-file filename.dat>

 

    • printM

It prints the dense mass matrix of the model.

printM <-file filename.dat>

 

    • printC

It prints the dense damping matrix of the model.

    • printEleK

It prints stiffness contribution of each element in the model.

    • Modal dynamic analysis - dynModal

To perform a Response Spectrum analysis based on modal results, use the following command:

dynModal $numModes $spectrum $patternID $comb $csi $dir1 $dir2 $dir3

where $numModes is the number of modes the user wants to combine, $spectrum is the name of the file containing the spectrum points, $patternID is the ID to be given to the load patterns created internally to perform the required linear static analyses, $comb let the user choose whether the SRSS (Eq. 1) or CQC (Eq. 2) method should be used, $csi is the damping ratio which is used to calculate the correlation coefficients needed when performing CQC.

The last three parameters ($dir1, $dir2, $dir3), which may assume a value of 0 or 1, are needed to specify the directions associated with the spectrum.

 

  (1)

 

 (2)

 

The command dynModal gives as output:

 1) nodal displacement envelope

 2) nodal reaction envelope

 3) element forces envelope

    • dynWrapper

It could be easier to access the dynWrapper function from procedure009.tcl supplied with NextFEM Designer. The command syntax is the following:

DynWrapper $numModes $patternID $comb $csi $directions $spectra

where

$numModes is the number of modes the user wants to combine,

$patternID is the ID to be given to the load patterns created internally when dynModal is called,

$comb let the user choose whether the SRSS or CQC method should be used,

$csi is the damping ratio which is used to calculate the correlation coefficients needed when performing CQC.

The $directions parameter is a list containing the directions grouped by spectrum, while $spectra is a list containing the filenames where the spectra are saved. The correlation between these two parameters is given by the order used to fill the lists.

 

Examples: for the same spectrum in X and Y directions:

DynWrapper 12 100 2 0.05 {{X Y}} {"slvOS.txt"} $modelName

For 2 difference spectrum in X and Y directions:

DynWrapper 12 100 2 0.05 {{X} {Y}} {"specX.txt" "specY.txt"} $modelName

For the same spectrum in X and Y directions and a different spectrum in Z:

DynWrapper 12 100 2 0.05 {{X Y} {Z}} {"specXY.txt" "specZ.txt"} $modelName

The command produces 4 output files:

  • RSdisp.out contains the displacement of each node, separated by spaces. The nodes are ordered like in any other recorder;

  • RSreact.out contains the reaction of each node, separated by spaces. The nodes are ordered like in any other recorder;

  • RSforces.out contains the element forces of each element in the model, separated by spaces. The nodes are ordered like in any other recorder but in global coordinates for each element;

  • RSpartFact.out contains the output of pFactors command. For the output order, see the pFactors command description.

The results for each file are appended by default to each file above (1 row per analysis). To have a new file each time the analysis runs, change lines 1987 and subsequent ones in procedure008.tcl as:

set fo [open "RSreact.out" w]

 

 

 

  • License

NextFEM, 2015-2020

By using this library, the user accomplishes to the following terms and conditions.

By using the software provided by NextFEM, you agree to be bound by these terms and conditions. The contents of the NextFEM site and all software provided, including the following terms and conditions, are subjected to changes and regular updates.

NextFEM is not responsible for the results obtained with this software of with any of its parts.

NextFEM is not liable to any part for direct, indirect, special, collateral, incidental or consequential damages, including lost profits, arising with the use of this software.

NextFEM provides this software "as is" and has no obligations to provide maintenance, support, updates, enhancements or modifications.

The disassembly of this library is prohibited.