diff --git a/OpenSees.bas b/OpenSees.bas
index 0fa9fab..38bb364 100644
--- a/OpenSees.bas
+++ b/OpenSees.bas
@@ -1,11 +1,9 @@
#
-# _____ _______ _____ _____ _____ _ __
-# | __ (_) _ \ _ | _ | / ___| |_ _| | | / _|
-# | | \/_| | | |_| |_| | | |_ __ ___ _ __ \ `--. ___ ___ ___ | | _ __ | |_ ___ _ __| |_ __ _ ___ ___
-# | | __| | | | |_ _| | | | '_ \ / _ \ '_ \ `--. \/ _ \/ _ \/ __| | || '_ \| __/ _ \ '__| _/ _` |/ __/ _ \
-# | |_\ \ | |/ / |_| \ \_/ / |_) | __/ | | /\__/ / __/ __/\__ \ _| || | | | || __/ | | || (_| | (_| __/
-# \____/_|___/ \___/| .__/ \___|_| |_\____/ \___|\___||___/ \___/_| |_|\__\___|_| |_| \__,_|\___\___|
-# | |
+# ____ _ ____ ___ ____ ___ _ __
+# / ___(_) _ \ _ / _ \ _ __ ___ _ __ / ___| ___ ___ ___ |_ _|_ __ | |_ ___ _ __ / _| __ _ ___ ___
+# | | _| | | | |_| |_| | | | '_ \ / _ \ '_ \\___ \ / _ \/ _ \/ __| | || '_ \| __/ _ \ '__| |_ / _` |/ __/ _ \
+# | |_| | | |_| |_ _| |_| | |_) | __/ | | |___) | __/ __/\__ \ | || | | | || __/ | | _| (_| | (_| __/
+# \____|_|____/ |_| \___/| .__/ \___|_| |_|____/ \___|\___||___/ |___|_| |_|\__\___|_| |_| \__,_|\___\___|
# |_|
#
# GiD + OpenSees Interface - An Integrated FEA Platform
@@ -310,9 +308,14 @@ model BasicBuilder -ndm *ndime -ndf *currentDOF
*tcl(LogFile)
-puts "\n--------------------------------------------------------------------------------------------------------"
-puts "\nGiD+OpenSees Interface *tcl(OpenSees::GetVersion)"
-puts "\nAnalysis summary\n"
+puts ""
+puts " __ __ __ __ _ "
+puts "/ _ .| \\ _|_ / \\ _ _ _ (_ _ _ _ | _ |_ _ _(_ _ _ _"
+puts "\\__)||__/ | \\__/|_)(-| )__)(-(-_) || )|_(-| | (_|(_(-"
+puts " | "
+puts " *tcl(OpenSees::GetVersion)"
+puts "Analysis summary"
+puts ""
*set var IntvNum=0
*loop intervals
*set var IntvNum=operation(IntvNum+1)
@@ -335,6 +338,8 @@ puts "Interval *IntvNum : *IntvData(Analysis_type) - *\
*endif
*end intervals
puts ""
+puts "----------------"
+puts ""
set time_start [clock seconds]
puts "Starting analysis at [clock format $time_start -format %H:%M:%S]\n"
*set var IntvNum=0
@@ -348,14 +353,14 @@ puts "Starting analysis at [clock format $time_start -format %H:%M:%S]\n"
#
# --------------------------------------------------------------------------------------------------------------
-puts "Running interval *IntvNum ...\n"
+puts "Running interval *IntvNum\n"
*include bas\Actions\Loads.bas
*include bas\Analysis\UpdateMaterialStage.bas
*include bas\Analysis\UpdateParameters.bas
# recording the initial status
-record;
+record
*include bas\Analysis\Analyze.bas
*if(IntvData(Keep_this_loading_active_until_the_end_of_analysis,int)==1)
@@ -381,11 +386,68 @@ setTime *IntvData(Time_to_be_set,real)
# --------------------------------------------------------------------------------------------------------------
+set hour 0.0
+set minute 0.0
+set second 0.0
set time_end [clock seconds]
set analysisTime [expr $time_end-$time_start]
+
puts "Analysis finished at [clock format $time_end -format %H:%M:%S]\n"
-puts "Analysis time : $analysisTime seconds"
+
+if {$analysisTime<60} {
+ if {$analysisTime==0} {
+ puts "Analysis time : less than one second"
+ } elseif {$analysisTime==1} {
+ puts "Analysis time : 1 second"
+ } else {
+ puts "Analysis time : $analysisTime seconds"
+ }
+
+} elseif {$analysisTime<3600} {
+ set minutes [expr $analysisTime/60]
+ set seconds [expr $analysisTime%60]
+
+ if {$minutes==1} {
+ puts -nonewline "Analysis time : 1 minute"
+ } else {
+ puts -nonewline "Analysis time : $minutes minutes"
+ }
+
+ if {$seconds==0} {
+ puts ""
+ } elseif {$seconds==1} {
+ puts " and 1 second"
+ } else {
+ puts " and $seconds seconds"
+ }
+
+} else {
+ set hours [expr $analysisTime/3600]
+ set minutes [expr ($analysisTime%3600)/60]
+ set seconds [expr ($analysisTime%3600)%60]
+
+ if {$hours==1} {
+ puts -nonewline "Analysis time : 1 hour"
+ } else {
+ puts -nonewline "Analysis time : $hours hours"
+ }
+
+ if {$minutes==0} {
+ } elseif {$minute==1} {
+ puts -nonewline ", 1 minute"
+ } else {
+ puts -nonewline ", $minutes minutes"
+ }
+
+ if {$seconds==0} {
+ puts ""
+ } elseif {$second==1} {
+ puts " and 1 second"
+ } else {
+ puts " and $seconds seconds"
+ }
+}
*#
*# Metadata
*#
-*include bas\Model\Meta.bas
\ No newline at end of file
+*include bas\Model\Meta.bas
diff --git a/OpenSees.cnd b/OpenSees.cnd
index 8de129e..39ff84b 100644
--- a/OpenSees.cnd
+++ b/OpenSees.cnd
@@ -223,10 +223,10 @@ QUESTION: Uniform_load_acting_in_local_y_direction#UNITS#
VALUE: 0.0 kN/m
QUESTION: Uniform_load_acting_in_local_z_direction#UNITS#
VALUE: 0.0 kN/m
-QUESTION: _#CB#(Hover_mouse_for_local_axes_info)
-VALUE: Hover for local axes info
-STATE: DISABLED
-HELP: LOCAL AXES INFO\n\nThe local-x longitudinal axis is always specified by the positive element direction (View -> Normals -> Lines)\n\nIN A 2D PROBLEM :\n\nLocal-x axis coincides with the element positive direction\nLocal-z axis coincides with the global Z axis direction\nLocal-y axis is found by the right hand rule\n\nIN A 3D PROBLEM :\n\nVERTICAL axis is user-specified (Y or Z) in Modeling Options\n\nFor a horizontal element :\nLocal-x axis coincides with the element positive direction\nLocal-z coincides with the direction of the defined VERTICAL axis (global Y or Z)\nLocal-y axis is found by the right hand rule\n\nFor a vertical element :\nLocal-x axis coincides with the element positive direction\nLocal-z positive direction coincides with the global X axis negative direction\nLocal-y axis is found by the right hand rule\n\nFor an oblique element :\nVector Vecxz has the direction of the defined VERTICAL axis (global Y or Z)\nLocal-x axis direction (Vx) coincides with the element positive direction\nLocal-y axis direction (Vy) is found by the cross product Vy = Vecxz x Vx\nLocal-z axis direction (Vz) is found by the cross product Vz = Vx x Vy
+QUESTION: _#CB#(_)
+VALUE:
+STATE: HIDDEN
+TKWIDGET: TK_LocalAxesInfo
QUESTION: __#CB#(_)
VALUE:
STATE: HIDDEN
@@ -310,7 +310,6 @@ END CONDITION
BOOK: Constraints
-
CONDITION: Point_Equal_constraint_master_node
CONDTYPE: over points
CONDMESHTYPE: over nodes
diff --git a/OpenSees.mat b/OpenSees.mat
index eb1bcd2..7559cf5 100644
--- a/OpenSees.mat
+++ b/OpenSees.mat
@@ -298,6 +298,7 @@ QUESTION: Initial_hardening
VALUE: 0.4
QUESTION: Pinching_factor_for_the_cyclic_slip_vs_bar_response
VALUE: 0.5
+TKWIDGET: TK_MaterialWikiInfo
END MATERIAL
@@ -1197,10 +1198,10 @@ STATE: HIDDEN
QUESTION: Shear_modulus_G#UNITS#
VALUE: 11.66666667 GPa
TITLE: Section_properties
-QUESTION: _#CB#(Hover_for_local_axes_info)
-VALUE: Hover for local axes info
-STATE: DISABLED
-HELP: LOCAL AXES INFO\n\nThe local-x longitudinal axis is always specified by the positive element direction (View -> Normals -> Lines)\nShown in figure are the element transverse local-y and local-z axes\n\nIN A 2D PROBLEM :\n\nHeight refers to the local-y axis\nWidth refers to the local-z axis\n\nLocal-x axis coincides with the element positive direction\nLocal-z axis coincides with the global Z axis direction\nLocal-y axis is found by the right hand rule\n\nIN A 3D PROBLEM :\n\nVERTICAL axis is user-specified (Y or Z) in Modeling Options\n\nHeight refers to the local-z axis\nWidth refers to the local-y axis\n\nFor a horizontal element :\nLocal-x axis coincides with the element positive direction\nLocal-z coincides with the direction of the defined VERTICAL axis (global Y or Z)\nLocal-y axis is found by the right hand rule\n\nFor a vertical element :\nLocal-x axis coincides with the element positive direction\nLocal-z positive direction coincides with the global X axis negative direction\nLocal-y axis is found by the right hand rule\n\nFor an oblique element :\nVector Vecxz has the direction of the defined VERTICAL axis (global Y or Z)\nLocal-x axis direction (Vx) coincides with the element positive direction\nLocal-y axis direction (Vy) is found by the cross product Vy = Vecxz x Vx\nLocal-z axis direction (Vz) is found by the cross product Vz = Vx x Vy
+QUESTION: _#CB#(_)
+VALUE:
+STATE: HIDDEN
+TKWIDGET: TK_LocalAxesInfo
QUESTION: Cross_section#CB#(Rectangular,Tee,Circular,General)
VALUE: Rectangular
DEPENDENCIES: (Rectangular,RESTORE,Height_h,#CURRENT#,RESTORE,Width_B,#CURRENT#,HIDE,Diameter_d,#CURRENT#,HIDE,Height_hf,#CURRENT#,HIDE,Width_bf,#CURRENT#,HIDE,Width_bw,#CURRENT#,HIDE,Area_A,#CURRENT#,HIDE,Moment_of_inertia_about_local-y_Iyy,#CURRENT#,HIDE,Moment_of_inertia_about_local-z_Izz,#CURRENT#,HIDE,Torsional_moment_of_inertia_Iyz,#CURRENT#)
@@ -1263,10 +1264,10 @@ QUESTION: Compatible_materials:#CB#(_)
VALUE: Concrete uniaxial materials/InitStrain/InitStress/Steel uniaxial materials
TKWIDGET: TK_SectionWikiInfo
TITLE: Section_properties
-QUESTION: _#CB#(Hover_for_local_axes_info)
-VALUE: Hover for local axes info
-STATE: DISABLED
-HELP: LOCAL AXES INFO\n\nThe local-x longitudinal axis is always specified by the positive element direction (View -> Normals -> Lines)\nShown in figure are the element transverse local-y and local-z axes\n\nIN A 2D PROBLEM :\n\nHeight refers to the local-y axis\nWidth refers to the local-z axis\n\nLocal-x axis coincides with the element positive direction\nLocal-z axis coincides with the global Z axis direction\nLocal-y axis is found by the right hand rule\n\nIN A 3D PROBLEM :\n\nVERTICAL axis is user-specified (Y or Z) in Modeling Options\n\nHeight refers to the local-z axis\nWidth refers to the local-y axis\n\nFor a horizontal element :\nLocal-x axis coincides with the element positive direction\nLocal-z coincides with the direction of the defined VERTICAL axis (global Y or Z)\nLocal-y axis is found by the right hand rule\n\nFor a vertical element :\nLocal-x axis coincides with the element positive direction\nLocal-z positive direction coincides with the global X axis negative direction\nLocal-y axis is found by the right hand rule\n\nFor an oblique element :\nVector Vecxz has the direction of the defined VERTICAL axis (global Y or Z)\nLocal-x axis direction (Vx) coincides with the element positive direction\nLocal-y axis direction (Vy) is found by the cross product Vy = Vecxz x Vx\nLocal-z axis direction (Vz) is found by the cross product Vz = Vx x Vy
+QUESTION: _#CB#(_)
+VALUE:
+STATE: HIDDEN
+TKWIDGET: TK_LocalAxesInfo
QUESTION: Cross_section#CB#(Rectangular_Column,Rectangular_Beam,Tee_Beam,Circular_Column,Bridge_Deck)
VALUE: Rectangular_Column
DEPENDENCIES: (Rectangular_Column,RESTORE,Core_material,#CURRENT#,RESTORE,Cover_material,#CURRENT#,RESTORE,Reinforcing_bar_material,#CURRENT#,HIDE,Width_bf,#CURRENT#,HIDE,Bottom_beam_bar_area,#CURRENT#,HIDE,Bottom_beam_bar_size,#CURRENT#,HIDE,Bottom_beam_bars,#CURRENT#,HIDE,Slab_bar_area,#CURRENT#,HIDE,Top_beam_bar_area,#CURRENT#,HIDE,Web_width_bw,#CURRENT#,HIDE,Slab_thickness_hf,#CURRENT#,HIDE,Top_beam_bars,#CURRENT#,HIDE,Slab_bars,#CURRENT#,HIDE,Slab_bar_size,#CURRENT#,HIDE,Top_beam_bar_size,#CURRENT#,HIDE,Top_bars,#CURRENT#,HIDE,Bottom_bars,#CURRENT#,HIDE,Top_bar_size,#CURRENT#,HIDE,Bottom_bar_size,#CURRENT#,HIDE,Top_bar_area,#CURRENT#,HIDE,Bottom_bar_area,#CURRENT#,HIDE,Bar_area,#CURRENT#,RESTORE,Height_h,#CURRENT#,RESTORE,Width_b,#CURRENT#,HIDE,Diameter_d,#CURRENT#,HIDE,Bars_along_arc,#CURRENT#,HIDE,Bar_size,#CURRENT#,HIDE,Fibers_in_the_circumferential_direction,#CURRENT#,HIDE,Fibers_in_the_radial_direction,#CURRENT#,RESTORE,Bars_along_z_axis_face,#CURRENT#,RESTORE,Bars_along_y_axis_face,#CURRENT#,RESTORE,Corner_bar_size,#CURRENT#,RESTORE,Middle_bar_size,#CURRENT#,RESTORE,Corner_bar_area,#CURRENT#,RESTORE,Middle_bar_area,#CURRENT#,RESTORE,Fibers_in_local_z_direction,#CURRENT#,RESTORE,Fibers_in_local_y_direction,#CURRENT#,HIDE,Top_slab_width_wt,#CURRENT#,HIDE,Bottom_slab_width_wb,#CURRENT#,HIDE,Top_slab_thickness_ts1,#CURRENT#,HIDE,Bottom_slab_thickness_ts2,#CURRENT#,HIDE,Height_hv,#CURRENT#,HIDE,External_web_thickness_tw,#CURRENT#,HIDE,Include_additional_part,#CURRENT#,HIDE,Solid_Section,#CURRENT#,HIDE,Bars_on_top_layer_of_top_slab,#CURRENT#,HIDE,Bars_on_bottom_layer_of_top_slab,#CURRENT#,HIDE,Bars_on_top_layer_of_bottom_slab,#CURRENT#,HIDE,Bars_on_bottom_layer_of_bottom_slab,#CURRENT#,HIDE,Bars_along_beam_height,#CURRENT#,HIDE,Bars_along_beam_width,#CURRENT#,HIDE,Top_slab_bar_size,#CURRENT#,HIDE,Bottom_slab_bar_size,#CURRENT#,HIDE,Top_slab_bar_area,#CURRENT#,HIDE,Bottom_slab_bar_area,#CURRENT#,HIDE,Fibers_along_top_slab_width,#CURRENT#,HIDE,Fibers_along_top_slab_thickness,#CURRENT#,HIDE,Fibers_along_bottom_slab_width,#CURRENT#,HIDE,Fibers_along_bottom_slab_thickness,#CURRENT#,HIDE,Fibers_along_external_web_thickness,#CURRENT#,HIDE,Fibers_along_internal_web_thickness,#CURRENT#,HIDE,Fibers_along_web_height,#CURRENT#,HIDE,Main_section_material,#CURRENT#,HIDE,Top_slab_reinforcing_bar_material,#CURRENT#,HIDE,Bottom_slab_reinforcing_bar_material,#CURRENT#)
@@ -1572,10 +1573,10 @@ QUESTION: Compatible_materials:#CB#(_)
VALUE: Concrete uniaxial materials/InitStrain/InitStress/Steel uniaxial materials
TKWIDGET: TK_SectionWikiInfo
TITLE: Section_properties
-QUESTION: _#CB#(Hover_for_local_axes_info)
-VALUE: Hover for local axes info
-STATE: DISABLED
-HELP: LOCAL AXES INFO\n\nThe local-x longitudinal axis is always specified by the positive element direction (View -> Normals -> Lines)\nShown in figure are the element transverse local-y and local-z axes\n\nIN A 2D PROBLEM :\n\nHeight refers to the local-y axis\nWidth refers to the local-z axis\n\nLocal-x axis coincides with the element positive direction\nLocal-z axis coincides with the global Z axis direction\nLocal-y axis is found by the right hand rule\n\nIN A 3D PROBLEM :\n\nVERTICAL axis is user-specified (Y or Z) in Modeling Options\n\nHeight refers to the local-z axis\nWidth refers to the local-y axis\n\nFor a horizontal element :\nLocal-x axis coincides with the element positive direction\nLocal-z coincides with the direction of the defined VERTICAL axis (global Y or Z)\nLocal-y axis is found by the right hand rule\n\nFor a vertical element :\nLocal-x axis coincides with the element positive direction\nLocal-z positive direction coincides with the global X axis negative direction\nLocal-y axis is found by the right hand rule\n\nFor an oblique element :\nVector Vecxz has the direction of the defined VERTICAL axis (global Y or Z)\nLocal-x axis direction (Vx) coincides with the element positive direction\nLocal-y axis direction (Vy) is found by the cross product Vy = Vecxz x Vx\nLocal-z axis direction (Vz) is found by the cross product Vz = Vx x Vy
+QUESTION: _#CB#(_)
+VALUE:
+STATE: HIDDEN
+TKWIDGET: TK_LocalAxesInfo
QUESTION: Left_subsection(-y_direction):#CB#(_)
VALUE:
TKWIDGET: FiberInt::CheckFieldValues
@@ -1774,10 +1775,10 @@ QUESTION: Material#MAT#(Multidimensional_(nD)_Materials)
VALUE: Elastic_Isotropic
TKWIDGET: EBC::CheckMaterial
TITLE: Section_properties
-QUESTION: _#CB#(Hover_for_local_axes_info)
-VALUE: Hover for local axes info
-STATE: DISABLED
-HELP: LOCAL AXES INFO\n\nThe local-x longitudinal axis is always specified by the positive element direction (View -> Normals -> Lines)\nShown in figure are the element transverse local-y and local-z axes\n\nIN A 2D PROBLEM :\n\nHeight refers to the local-y axis\nWidth refers to the local-z axis\n\nLocal-x axis coincides with the element positive direction\nLocal-z axis coincides with the global Z axis direction\nLocal-y axis is found by the right hand rule\n\nIN A 3D PROBLEM :\n\nVERTICAL axis is user-specified (Y or Z) in Modeling Options\n\nHeight refers to the local-z axis\nWidth refers to the local-y axis\n\nFor a horizontal element :\nLocal-x axis coincides with the element positive direction\nLocal-z coincides with the direction of the defined VERTICAL axis (global Y or Z)\nLocal-y axis is found by the right hand rule\n\nFor a vertical element :\nLocal-x axis coincides with the element positive direction\nLocal-z positive direction coincides with the global X axis negative direction\nLocal-y axis is found by the right hand rule\n\nFor an oblique element :\nVector Vecxz has the direction of the defined VERTICAL axis (global Y or Z)\nLocal-x axis direction (Vx) coincides with the element positive direction\nLocal-y axis direction (Vy) is found by the cross product Vy = Vecxz x Vx\nLocal-z axis direction (Vz) is found by the cross product Vz = Vx x Vy
+QUESTION: _#CB#(_)
+VALUE:
+STATE: HIDDEN
+TKWIDGET: TK_LocalAxesInfo
QUESTION: Cross_section#CB#(Rectangular,Tee,Circular,General)
VALUE: Rectangular
DEPENDENCIES: (Rectangular,RESTORE,Height_h,#CURRENT#,RESTORE,Width_B,#CURRENT#,HIDE,Diameter_d,#CURRENT#,HIDE,Height_hf,#CURRENT#,HIDE,Width_bf,#CURRENT#,HIDE,Width_bw,#CURRENT#,HIDE,Area_A,#CURRENT#,HIDE,Moment_of_inertia_about_local-y_Iyy,#CURRENT#,HIDE,Moment_of_inertia_about_local-z_Izz,#CURRENT#,HIDE,Torsional_moment_of_inertia_Iyz,#CURRENT#)
@@ -1843,10 +1844,10 @@ QUESTION: Material#MAT#(Multidimensional_(nD)_Materials)
VALUE: Elastic_Isotropic
TKWIDGET: EBC::CheckMaterial
TITLE: Section_properties
-QUESTION: _#CB#(Hover_for_local_axes_info)
-VALUE: Hover for local axes info
-STATE: DISABLED
-HELP: LOCAL AXES INFO\n\nThe local-x longitudinal axis is always specified by the positive element direction (View -> Normals -> Lines)\nShown in figure are the element transverse local-y and local-z axes\n\nIN A 2D PROBLEM :\n\nHeight refers to the local-y axis\nWidth refers to the local-z axis\n\nLocal-x axis coincides with the element positive direction\nLocal-z axis coincides with the global Z axis direction\nLocal-y axis is found by the right hand rule\n\nIN A 3D PROBLEM :\n\nVERTICAL axis is user-specified (Y or Z) in Modeling Options\n\nHeight refers to the local-z axis\nWidth refers to the local-y axis\n\nFor a horizontal element :\nLocal-x axis coincides with the element positive direction\nLocal-z coincides with the direction of the defined VERTICAL axis (global Y or Z)\nLocal-y axis is found by the right hand rule\n\nFor a vertical element :\nLocal-x axis coincides with the element positive direction\nLocal-z positive direction coincides with the global X axis negative direction\nLocal-y axis is found by the right hand rule\n\nFor an oblique element :\nVector Vecxz has the direction of the defined VERTICAL axis (global Y or Z)\nLocal-x axis direction (Vx) coincides with the element positive direction\nLocal-y axis direction (Vy) is found by the cross product Vy = Vecxz x Vx\nLocal-z axis direction (Vz) is found by the cross product Vz = Vx x Vy
+QUESTION: _#CB#(_)
+VALUE:
+STATE: HIDDEN
+TKWIDGET: TK_LocalAxesInfo
QUESTION: Cross_section#CB#(Rectangular,Tee,Circular,General)
VALUE: Rectangular
DEPENDENCIES: (Rectangular,RESTORE,Height_h,#CURRENT#,RESTORE,Width_B,#CURRENT#,HIDE,Diameter_d,#CURRENT#,HIDE,Height_hf,#CURRENT#,HIDE,Width_bf,#CURRENT#,HIDE,Width_bw,#CURRENT#,HIDE,Area_A,#CURRENT#,HIDE,Moment_of_inertia_about_local-y_Iyy,#CURRENT#,HIDE,Moment_of_inertia_about_local-z_Izz,#CURRENT#,HIDE,Torsional_moment_of_inertia_Iyz,#CURRENT#)
diff --git a/OpenSees.prb b/OpenSees.prb
index 634355a..ccea2f8 100644
--- a/OpenSees.prb
+++ b/OpenSees.prb
@@ -43,14 +43,12 @@ VALUE:
QUESTION: Model_dimensions#CB#(2,3)
VALUE: 2
STATE: DISABLED
+HELP: If a 3D model is detected, this value will automatically switch to 3.
DEPENDENCIES: (2,SET,Vertical_axis,Y)
TKWIDGET: TK_EditModelDim
-QUESTION: ___#CB#(_)
-VALUE: If a 3D model is detected, this value will automatically switch to 3.
QUESTION: Vertical_axis#CB#(Y,Z)
VALUE: Y
-QUESTION: ____#CB#(_)
-VALUE: Default vertical axis is global Y. For 3D models, selecting global Z is recommended.
+HELP: Default vertical axis is global Y. For 3D models, selecting global Z is recommended.
TITLE: Eigenvalue_Analysis
QUESTION: _____#CB#(_)
VALUE:
@@ -104,7 +102,7 @@ BOOK: Output_Options
TITLE: General
QUESTION: ________#CB#(_)
VALUE:
-QUESTION: Use_binary_format#CB#(1,0)
+QUESTION: Use_HDF5_binary_output_format#CB#(1,0)
VALUE: 0
QUESTION: _________#CB#(_)
VALUE:
@@ -170,7 +168,6 @@ QUESTION: Enabled#CB#(1,0)
VALUE: 1
QUESTION: Description
VALUE:
-#TKWIDGET: GidUtils::TkwidgetEntryConfigure {-width 50}
QUESTION: System_of_equations#CB#(BandGeneral,BandSPD,ProfileSPD,SparseGEN,UmfPack,FullGeneral,SparseSYM)
VALUE: BandGeneral
TKWIDGET: TK_EditInterval
@@ -272,13 +269,13 @@ DEPENDENCIES: (2,HIDE,Ground_motion_direction,#CURRENT#,HIDE,Record_file,#CURREN
DEPENDENCIES: (3,HIDE,Ground_motion_direction,#CURRENT#,HIDE,Record_file,#CURRENT#,RESTORE,First_record_file,#CURRENT#,RESTORE,Second_record_file,#CURRENT#,RESTORE,Third_record_file,#CURRENT#,RESTORE,First_ground_motion_direction,#CURRENT#,RESTORE,Second_ground_motion_direction,#CURRENT#,RESTORE,Third_ground_motion_direction,#CURRENT#)
TKWIDGET: IntvData::MotionDirections
QUESTION: First_record_file#MAT#(Records)
-VALUE: Ground_motion_record
+VALUE: Ground_Motion_Record
QUESTION: Second_record_file#MAT#(Records)
-VALUE: Ground_motion_record
+VALUE: Ground_Motion_Record
QUESTION: Third_record_file#MAT#(Records)
-VALUE: Ground_motion_record
+VALUE: Ground_Motion_Record
QUESTION: Record_file#MAT#(Records)
-VALUE: Ground_motion_record
+VALUE: Ground_Motion_Record
QUESTION: Ground_motion_direction#CB#(Ux,Uy,Uz,Rx,Ry,Rz)
VALUE: Ux
QUESTION: First_ground_motion_direction#CB#(Ux,Uy,Uz,Rx,Ry,Rz)
@@ -289,11 +286,11 @@ QUESTION: Third_ground_motion_direction#CB#(Ux,Uy,Uz,Rx,Ry,Rz)
VALUE: Uy
QUESTION: Loading_path#CB#(Monotonic,Cyclic)
VALUE: Monotonic
-DEPENDENCIES: (Cyclic,RESTORE,Displacement_peaks-cycles,#CURRENT#,RESTORE,Displacement_peaks,#CURRENT#)
-DEPENDENCIES: (Monotonic,HIDE,Displacement_peaks-cycles,#CURRENT#,HIDE,Displacement_peaks,#CURRENT#)
+DEPENDENCIES: (Cyclic,RESTORE,Adjust_number_of_steps_according_to_displacement_ratio,#CURRENT#,RESTORE,Displacement_peaks-cycles,#CURRENT#,RESTORE,Displacement_peaks,#CURRENT#)
+DEPENDENCIES: (Monotonic,HIDE,Adjust_number_of_steps_according_to_displacement_ratio,#CURRENT#,HIDE,Displacement_peaks-cycles,#CURRENT#,HIDE,Displacement_peaks,#CURRENT#)
TKWIDGET: IntvData::LoadingPath
QUESTION: Displacement_peaks-cycles(Displacement_ratio,Number_of_cycles)
-VALUE: #N# 2 1 5
+VALUE: #N# 2 1.0 5
QUESTION: Convergence_criterion#CB#(Norm_Unbalance,Norm_Displacement_Increment,Energy_Increment,Relative_Norm_Unbalance,Relative_Norm_Displacement_Increment,Total_Relative_Norm_Displacement_Increment,Relative_Energy_Increment,Fixed_Number_of_Iterations)
VALUE: Relative_Energy_Increment
DEPENDENCIES: (Norm_Unbalance,RESTORE,Tolerance,#CURRENT#,RESTORE,Tolerance_relaxation,#CURRENT#)
@@ -310,6 +307,9 @@ HELP: Tolerance criteria for checking convergence
QUESTION: Max_iterations_per_step
VALUE: 50
HELP: Maximum number of iterations per step
+QUESTION: Adjust_number_of_steps_according_to_displacement_ratio#CB#(0,1)
+VALUE: 0
+HELP: Multiply number of steps by displacement ratio in each cycle to maintain a constant load step magnitude
QUESTION: Tolerance_relaxation#CB#(0,1)
VALUE: 0
DEPENDENCIES: (1,RESTORE,Tolerance_relaxation_after_failed_substepping_of,#CURRENT#,RESTORE,Relaxation_factor,#CURRENT#)
@@ -317,6 +317,7 @@ DEPENDENCIES: (0,HIDE,Tolerance_relaxation_after_failed_substepping_of,#CURRENT#
TKWIDGET: IntvData::ToleranceRelaxation
QUESTION: Tolerance_relaxation_after_failed_substepping_of#CB#(/2,/4,/8,/16)
VALUE: /8
+HELP: If solution diverges after selected substepping divisor, repeat with tolerance multiplied by relaxation factor
QUESTION: Relaxation_factor
VALUE: 10
QUESTION: Activate_dead_load#CB#(1,0)
@@ -338,8 +339,8 @@ HELP: Reset to the original state
QUESTION: Remove_load_pattern_at_the_end_of_the_interval_analysis#CB#(0,1)
VALUE: 0
QUESTION: Logging_level#CB#(Low,Medium,High)
-VALUE: Low
-HELP: Low : print nothing\nMedium : print information on norms and number of iterations at end of successful test\nHigh : print information on norms each time test is invoked
+VALUE: Medium
+HELP: Low : print nothing\nMedium : print information for each step\nHigh : print information for each step and iteration
TKWIDGET: TK_AnalWikiInfo
TITLE: Sine_Excitation_Parameters
QUESTION: Duration#UNITS#
diff --git a/OpenSees.tcl b/OpenSees.tcl
index 00f33ec..a5486dd 100644
--- a/OpenSees.tcl
+++ b/OpenSees.tcl
@@ -19,11 +19,11 @@
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
+# along with this program. If not, see .
#
# TCL macros
@@ -31,8 +31,8 @@
namespace eval OpenSees {
- variable VersionNumber "v2.5.5"
- variable InterfaceName [_ "GiD+OpenSees Interface v2.5.5"]
+ variable VersionNumber "v2.6.0"
+ variable InterfaceName [_ "GiD+OpenSees Interface v2.6.0"]
variable OpenSeesProblemTypePath
variable OpenSeesPath
variable GiDPath
@@ -97,7 +97,7 @@ proc OpenSees::InitGIDProject { dir } {
proc OpenSees::ChangeData {} {
global GidPriv
- variable InterfaceName;
+ variable InterfaceName
set GidPriv(ProgName) $InterfaceName
GidChangeDataLabel "Conditions" ""
@@ -131,7 +131,7 @@ proc OpenSees::ChangeData {} {
proc OpenSees::GetProblemTypePath {} {
- variable OpenSeesProblemTypePath;
+ variable OpenSeesProblemTypePath
return $OpenSeesProblemTypePath
}
@@ -143,8 +143,8 @@ proc OpenSees::SetProjectNameAndPath {} {
set ProblemType [lindex $lines 0]
set ProjectName [lindex $lines 1]
- variable GiDProjectDir;
- variable GiDProjectName;
+ variable GiDProjectDir
+ variable GiDProjectName
# GiD_Info Project returns a list with project information { ProblemType ModelName .. .. .. }
@@ -188,7 +188,7 @@ proc OpenSees::GetProjectName {} {
proc OpenSees::SetOpenSeesPath {} {
- variable OpenSeesPath;
+ variable OpenSeesPath
variable OpenSeesProblemTypePath
global GidProcWin
@@ -205,6 +205,7 @@ proc OpenSees::SetOpenSeesPath {} {
regsub -all {\\} $OpenSeesPath {/} OpenSeesPath
} else {
+
if { ![info exists GidProcWin(w)] || \
![winfo exists $GidProcWin(w).listbox#1] } {
set wbase .gid
@@ -213,20 +214,21 @@ proc OpenSees::SetOpenSeesPath {} {
set wbase $GidProcWin(w)
set w $GidProcWin(w).listbox#1
}
- tk_dialogRAM $wbase.tmpwin [_ "Error"] [_ "OpenSees path was not found" ] error 0 [_ "Close"]
+
+ tk_dialogRAM $wbase.tmpwin [_ "Error"] [_ "OpenSees.path file was not found. Please re-install interface." ] error 0 [_ "Close"]
}
}
proc OpenSees::GetOpenSeesPath {} {
- variable OpenSeesPath;
+ variable OpenSeesPath
return $OpenSeesPath
}
# Get OpenSees version
proc OpenSees::GetVersion {} {
- variable VersionNumber;
+ variable VersionNumber
return $VersionNumber
}
@@ -243,68 +245,68 @@ proc OpenSees::Toolbar1 {{type "DEFAULT INSIDELEFT"}} {
proc Opt1_1 { } {
GidOpenMaterials Standard_Uniaxial_Materials
- HideInforBar
+ HideInfoBar
}
proc Opt1_2 { } {
GidOpenMaterials Uniaxial_Concrete_Materials
- HideInforBar
+ HideInfoBar
}
proc Opt1_3 { } {
GidOpenMaterials Uniaxial_Steel_Materials
- HideInforBar
+ HideInfoBar
}
proc Opt1_4 {} {
GidOpenMaterials "Multidimensional_(nD)_Materials"
- HideInforBar
+ HideInfoBar
}
proc Opt1_5 { } {
GidOpenMaterials "Section_Force-Deformation"
- HideInforBar
+ HideInfoBar
}
proc Opt1_6 { } {
GidOpenMaterials "Combined_Materials"
- HideInforBar
+ HideInfoBar
}
proc Opt1_7 { } {
GidOpenMaterials "Records"
- HideInforBar
+ HideInfoBar
}
-
+
proc Opt1_8 { } {
GidOpenConditions Restraints
- HideInforBar
+ HideInfoBar
}
proc Opt1_9 { } {
GidOpenConditions Constraints
- HideInforBar
+ HideInfoBar
}
proc Opt1_10 { } {
GidOpenConditions Mass/Damping
- HideInforBar
+ HideInfoBar
}
proc Opt1_11 { } {
GidOpenConditions Loads
- HideInforBar
+ HideInfoBar
}
set ToolbarBitmaps1(0) " \
@@ -380,55 +382,55 @@ proc OpenSees::Toolbar2 {{type "DEFAULT INSIDELEFT"}} {
proc Opt2_1 { } {
GidOpenConditions ZeroLength_Elements
- HideInforBar
+ HideInfoBar
}
proc Opt2_2 { } {
GidOpenMaterials Truss_Elements
- HideInforBar
+ HideInfoBar
}
proc Opt2_3 { } {
GidOpenMaterials "Beam-Column_Elements"
- HideInforBar
+ HideInfoBar
}
proc Opt2_4 { } {
GidOpenMaterials Surface_Elements
- HideInforBar
+ HideInfoBar
}
proc Opt2_5 { } {
GidOpenMaterials Solid_Elements
- HideInforBar
+ HideInfoBar
}
proc Opt2_6 { } {
GidOpenProblemData "General_Data"
- HideInforBar
+ HideInfoBar
}
proc Opt2_7 { } {
GidOpenProblemData "Output_Options"
- HideInforBar
+ HideInfoBar
}
proc Opt2_8 { } {
GiD_Process Mescape Data IDataWindow
- HideInforBar
+ HideInfoBar
}
proc Opt2_9 { } {
GiD_Process Mescape Meshing generate
- HideInforBar
+ HideInfoBar
}
proc Opt2_10 { } {
@@ -462,7 +464,7 @@ proc OpenSees::Toolbar2 {{type "DEFAULT INSIDELEFT"}} {
variable ElemDrawStatus 0
- proc Opt2_12 { } { # Switch draw elements
+ proc Opt2_12 { } {; # Switch draw elements
variable ElemDrawStatus
variable NormalsDrawStatus
@@ -487,7 +489,7 @@ proc OpenSees::Toolbar2 {{type "DEFAULT INSIDELEFT"}} {
variable ConditionsDrawStatus 0
- proc Opt2_13 { } { # Switch draw conditions
+ proc Opt2_13 { } {; # Switch draw conditions
variable ElemDrawStatus
variable NormalsDrawStatus
@@ -529,6 +531,8 @@ proc OpenSees::Toolbar2 {{type "DEFAULT INSIDELEFT"}} {
img/Toolbar/$GiDtheme/btn_Mesh.png \
img/Toolbar/$GiDtheme/btn_Calc.png \
img/Toolbar/$GiDtheme/btn_Separator.png \
+ img/Toolbar/$GiDtheme/btn_tcl.png \
+ img/Toolbar/$GiDtheme/btn_Separator.png \
img/Toolbar/$GiDtheme/btn_LocalAxes.png \
img/Toolbar/$GiDtheme/btn_ViewElem.png \
img/Toolbar/$GiDtheme/btn_ViewCond.png \
@@ -547,10 +551,12 @@ proc OpenSees::Toolbar2 {{type "DEFAULT INSIDELEFT"}} {
[list -np- OpenSees::Opt2_9] \
[list -np- OpenSees::Opt2_10] \
"" \
+ [list -np- btn_Open_tcl] \
+ "" \
[list -np- OpenSees::Opt2_11] \
[list -np- OpenSees::Opt2_12] \
[list -np- OpenSees::Opt2_13] \
- [list -np- OpenSees::Opt2_14]
+ [list -np- OpenSees::Opt2_14] \
]
set ToolbarHelp2(0) { \
@@ -566,6 +572,8 @@ proc OpenSees::Toolbar2 {{type "DEFAULT INSIDELEFT"}} {
"Generate Mesh" \
"Create .tcl, run analysis and postprocess" \
"" \
+ "Open .tcl file" \
+ "" \
"Show/Hide Line Local Axes" \
"Show/Hide Elements" \
"Show/Hide All Conditions for Active Interval" \
@@ -788,15 +796,20 @@ proc LoadGIDProject { filespd } {
if { $cmp != 0 } {
+ if { [winfo exist .splash]} {
+ destroy .splash
+ update
+ }
+
InitWindow $InfoWin [= "Version mismatch"] ErrorInfo "" "" 1
- if { ![winfo exists $InfoWin] } return ;
+ if { ![winfo exists $InfoWin] } return
ttk::frame $InfoWin.top
ttk::label $InfoWin.top.title_text -text [= ""]
ttk::frame $InfoWin.information -relief raised
ttk::label $InfoWin.information.errormessage -text [= "Current problemtype version ($VersionNumber) is different than saved model version ($spd_data). Please transform your model first."]
ttk::frame $InfoWin.bottom
ttk::button $InfoWin.bottom.continue -text [= "Transform"] -command "OpenSees::TransformAndClose"
- ttk::button $InfoWin.bottom.readlog -text [= "Ignore"] -command "destroy $InfoWin"
+ ttk::button $InfoWin.bottom.readlog -text [= "Keep old version"] -command "destroy $InfoWin"
grid $InfoWin.top.title_text -sticky ew
grid $InfoWin.top -sticky new
grid $InfoWin.information.errormessage -sticky w -padx 10 -pady 10
@@ -843,7 +856,7 @@ proc SaveGIDProject { filespd } {
OpenSees::SetProjectNameAndPath; # Change old project dir to the new one
- if { $OldGiDProjectDir != $NewGiDProjectDir} { # If project names are different
+ if { $OldGiDProjectDir != $NewGiDProjectDir} {; # If project names are different
set fexists [file exists "$OldGiDProjectDir/Records"]
if {$fexists} {
@@ -887,7 +900,7 @@ proc BeforeInitGIDPostProcess {} {
proc AfterTransformProblemType { file oldproblemtype newproblemtype messages } {
- # if version earlier than v2.5.0, change some conditions of compatibillity
+ # if version earlier than v2.5.0, change some conditions of compatibility
# Body Constraint -> Equal Constraint
set cond_points [GiD_Info conditions ovpnt]
@@ -1012,13 +1025,13 @@ proc AfterTransformProblemType { file oldproblemtype newproblemtype messages } {
lappend Idnew [lindex $data 3]
}
- GiD_UnAssignData condition $old_cond_name points "all"
+ #GiD_UnAssignData condition $old_cond_name points "all"
foreach point $points IDold $Idold IDnew $Idnew {
if { $IDold == "-" } {
- break;
+ break
} else {
@@ -1053,14 +1066,14 @@ proc AfterTransformProblemType { file oldproblemtype newproblemtype messages } {
lappend Planes [lindex $data 5]
}
- GiD_UnAssignData condition $old_cond_name points "all"
+ #GiD_UnAssignData condition $old_cond_name points "all"
foreach point $points IDold $Idold IDnew $Idnew plane $Planes {
# - means new user v2.5.0 and later
if {$IDold == "-"} {
- break;
+ break
} else {
@@ -1095,14 +1108,14 @@ proc AfterTransformProblemType { file oldproblemtype newproblemtype messages } {
lappend Planes [lindex $data 5]
}
- GiD_UnAssignData condition $old_cond_name lines "all"
+ #GiD_UnAssignData condition $old_cond_name lines "all"
foreach line $lines IDold $Idold IDnew $Idnew plane $Planes {
# - means new user v2.5.0 and later
if {$IDold == "-"} {
- break;
+ break
} else {
@@ -1348,6 +1361,27 @@ proc UpdateInfoBar { } {
.ibar.c create text 80 12 -text $dim -font "calibri 12" -fill $ibarTextColor -anchor center
.ibar.c create text 170 12 -text $act -font "calibri 12" -fill $ibarTextColor -anchor center
+ set GiDProjectDir [OpenSees::GetProjectPath]
+ set GiDProjectName [OpenSees::GetProjectName]
+
+ if {[file exists "$GiDProjectDir/$GiDProjectName.post.res"]} {
+
+ .ibar.c create text 252 12 -text "Ready to postprocess" -font "calibri 12" -fill $ibarTextColor -anchor w
+
+ } elseif {[file exists "$GiDProjectDir/OpenSees/$GiDProjectName.log"]} {
+
+ .ibar.c create text 252 12 -text "Solved" -font "calibri 12" -fill $ibarTextColor -anchor w
+
+ } elseif {[file exists "$GiDProjectDir/OpenSees/$GiDProjectName.tcl"]} {
+
+ .ibar.c create text 252 12 -text "Created" -font "calibri 12" -fill $ibarTextColor -anchor w
+
+ } else {
+
+ .ibar.c create text 252 12 -text "Not created" -font "calibri 12" -fill $ibarTextColor -anchor w
+
+ }
+
set off 10
.ibar.c create text [expr $w-$off] 12 -text "Lab of R/C and Masonry Structures, AUTh" -font "calibri 10" -fill $ibarLineColor -anchor e
@@ -1358,7 +1392,7 @@ proc UpdateInfoBar { } {
bind .gid {RefreshInfoBar}
bind .gid {RefreshInfoBar}
- bind .gid {HideInforBar}
+ bind .gid {HideInfoBar}
bind .gid