Skip to content
This repository was archived by the owner on Apr 23, 2025. It is now read-only.

Commit f1b4ebe

Browse files
authored
Merge pull request #86 from Dlubal-Software/11783-Concrete_design_addon
11783 concrete design addon
2 parents 4cbd0e8 + a4a033e commit f1b4ebe

23 files changed

Lines changed: 7411 additions & 92 deletions

PowerShellScripts/CopyFilesToRFEMLocation.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ catch
7272
Write-Output "Copying done"
7373

7474
$PathToRFEMExe = $PathToRFEM + "\\bin\\"
75-
$AppExe = ".\RFEM6.exe"
75+
$AppExe = ".\RFEM6.exe"
7676
# $AppExe = ".\RSTAB9.exe"
7777
# $AppExe = ".\RSECTION.exe"
7878
$ArgumentsList = "--prerelease-mode --dev-mode --dbg-solver --DEV-branch-name-in-title"

examples/high_level_functions_demos/addon_concrete_design.js

Lines changed: 503 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
3+
<script>
4+
<arguments>
5+
<argument argument-name="standard_index" default-value="0" label-name="Current index of standard for concrete design (0: EN, 1: ACI, 2: CSA, 3: SP, 4: NTC)"/>
6+
</arguments>
7+
</script>

examples/high_level_functions_demos/basic_objects_demo.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ if (RFEM) {
245245
surface.Membrane(undefined, linesForSurfaces[4][0], 1, "With default plane geometry type");
246246
surface.WithoutMembraneTension(undefined, linesForSurfaces[5][0], 1, "With default plane geometry type");
247247
var surfaceLoadTransfer = new Surface();
248-
surfaceLoadTransfer.LoadTransfer(undefined, linesForSurfaces[6][0], "DIRECTION_IN_Y", "Uniform", "With default plane geometry type");
248+
surfaceLoadTransfer.LoadTransfer(undefined, linesForSurfaces[6][0], "DIRECTION_IN_Y", "UNIFORM", "With default plane geometry type");
249249
// Load transfer surface options
250250
surfaceLoadTransfer.RemoveInfluenceFrom(undefined, undefined, [13, 14, 15, 16], undefined, [189,190,199,200]); // with lines and nodes defined
251251
surfaceLoadTransfer.SurfaceWeight(2000);

includes/AddOns/ConcreteDesign/ConcreteDesignSupport.js

Lines changed: 1114 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
include("../../Tools/high_level_functions_support.js");
2+
3+
function ConcreteDesignServiceabilityConfigurationACI (no,
4+
surfaces_no,
5+
members_no,
6+
comment,
7+
params) {
8+
this.addon = createBaseConcreteDesignConfiguration(CONCRETE_DESIGN.concrete_design_sls_configurations, no, surfaces_no, members_no, undefined, comment, params);
9+
}
10+
11+
/**
12+
* @returns Serviceability Configuration index
13+
*/
14+
ConcreteDesignServiceabilityConfigurationACI.prototype.GetNo = function () {
15+
return this.addon.no;
16+
};
17+
18+
/**
19+
* @returns Serviceability Configuration object
20+
*/
21+
ConcreteDesignServiceabilityConfigurationACI.prototype.GetUltimateConfiguration = function () {
22+
return this.addon;
23+
};
24+
25+
/**
26+
* Sets Name
27+
* @param {String} name Serviceability configuration name, can be undefined
28+
*/
29+
ConcreteDesignServiceabilityConfigurationACI.prototype.SetName = function (name) {
30+
ASSERT(typeof name !== "undefined", "Name must be specified");
31+
this.addon.name = name;
32+
};
33+
34+
/**
35+
* Sets Crack Analysis
36+
* @param {Boolean} property_design_without_direct_crack_width_calculation Design without direct crack width calculation, can be undefined (is not set, true as default)
37+
* @param {Boolean} property_calculation_of_maximum_member_spacing Calculation of maximum reinforcement spacing lim sl acc. to 24.3.2, can be undefined (is not set, true as default)
38+
* @param {Boolean} property_design_with_direct_crack_width_calculation Design with direct crack width calculation, can be undefined (is not set, true as default)
39+
* @param {Boolean} property_reasonable_crack_width Reasonable crack width acc. to ACI PRC-224-01, can be undefined (is not set, true as default)
40+
* @param {String} property_top_limit_values_of_crack_width Top (-z) limit values of crack width (01_USE_IN_WATER_RETAINING_STRUCTURES, 02_SEAWATER_AND_SEAWATER_SPRAY, 02_DEICING_CHEMICALS,
41+
* 03_HUMIDITY_MOIST_AIR_SOIL, 04_DRY_AIR_OR_PROTECTIVE_MEMBRANE), can be undefined (is not set, 03_HUMIDITY_MOIST_AIR_SOIL as default)
42+
* @param {String} property_bottom_limit_values_of_crack_width Bottom (+z) limit values of crack width (01_USE_IN_WATER_RETAINING_STRUCTURES, 02_SEAWATER_AND_SEAWATER_SPRAY, 02_DEICING_CHEMICALS,
43+
* 03_HUMIDITY_MOIST_AIR_SOIL, 04_DRY_AIR_OR_PROTECTIVE_MEMBRANE), can be undefined (is not set, 03_HUMIDITY_MOIST_AIR_SOIL as default)
44+
* @param {Boolean} property_user_defined_limit_values_of_crack_width User-defined limit values of crack width, can be undefined (is not set, false as default)
45+
* @param {Number} property_user_defined_top_limit_values_of_allowable_crack Limit values of allowable crack width (top), can be undefined (is not set, 0.3 mm as default)
46+
* @param {Number} property_user_defined_bottom_limit_values_of_allowable_crack Limit values of allowable crack width (bottom), can be undefined (is not set, 0.3 mm as default)
47+
* @param {Boolean} property_minimum_longitudinal_reinforcement_shrinkage_and_temperature Minimum longitudinal reinforcement due to shrinkage and temperature acc. to 24.4.3, can be undefined (is not set, true as default)
48+
* @param {Boolean} property_surface_top_reinforcement_direction_phi1 Top -z reinforcement direction - Reinforcement direction φ1, can be undefined (is not set, true as default)
49+
* @param {Boolean} property_surface_top_reinforcement_direction_phi2 Top -z reinforcement direction - Reinforcement direction φ2, can be undefined (is not set, true as default)
50+
* @param {Boolean} property_surface_bottom_reinforcement_direction_phi1 Bottom +z reinforcement direction - Reinforcement direction φ1, can be undefined (is not set, true as default)
51+
* @param {Boolean} property_surface_bottom_reinforcement_direction_phi2 Bottom +z reinforcement direction - Reinforcement direction φ2, can be undefined (is not set, true as default)
52+
*/
53+
ConcreteDesignServiceabilityConfigurationACI.prototype.SetCrackAnalysis = function (property_design_without_direct_crack_width_calculation,
54+
property_calculation_of_maximum_member_spacing,
55+
property_design_with_direct_crack_width_calculation,
56+
property_reasonable_crack_width,
57+
property_top_limit_values_of_crack_width,
58+
property_bottom_limit_values_of_crack_width,
59+
property_user_defined_limit_values_of_crack_width,
60+
property_user_defined_top_limit_values_of_allowable_crack,
61+
property_user_defined_bottom_limit_values_of_allowable_crack,
62+
property_minimum_longitudinal_reinforcement_shrinkage_and_temperature,
63+
property_surface_top_reinforcement_direction_phi1,
64+
property_surface_top_reinforcement_direction_phi2,
65+
property_surface_bottom_reinforcement_direction_phi1,
66+
property_surface_bottom_reinforcement_direction_phi2) {
67+
if (typeof property_design_without_direct_crack_width_calculation !== "undefined") {
68+
this.addon.settings_main_aci318.property_design_without_direct_crack_width_calculation = property_design_without_direct_crack_width_calculation;
69+
}
70+
if (typeof property_calculation_of_maximum_member_spacing !== "undefined") {
71+
ASSERT(this.addon.settings_main_aci318.property_design_without_direct_crack_width_calculation, "Design without direct crack width calculation must be on");
72+
this.addon.settings_main_aci318.property_calculation_of_maximum_member_spacing = property_calculation_of_maximum_member_spacing;
73+
}
74+
if (typeof property_design_with_direct_crack_width_calculation !== "undefined") {
75+
this.addon.settings_main_aci318.property_design_with_direct_crack_width_calculation = property_design_with_direct_crack_width_calculation;
76+
}
77+
if (typeof property_reasonable_crack_width !== "undefined") {
78+
ASSERT(this.addon.settings_main_aci318.property_design_with_direct_crack_width_calculation, "Design with direct crack width calculation must be on");
79+
this.addon.settings_main_aci318.property_reasonable_crack_width = property_reasonable_crack_width;
80+
}
81+
if (typeof property_top_limit_values_of_crack_width !== "undefined") {
82+
ASSERT(this.addon.settings_main_aci318.property_reasonable_crack_width, "Reasonable crack width acc. to ACI PRC-224-01 must be set");
83+
this.addon.settings_main_aci318.property_top_limit_values_of_crack_width = GetConcreteDesignLimitCrackWidthValueType(property_top_limit_values_of_crack_width);
84+
}
85+
if (typeof property_bottom_limit_values_of_crack_width !== "undefined") {
86+
ASSERT(this.addon.settings_main_aci318.property_reasonable_crack_width, "Reasonable crack width acc. to ACI PRC-224-01 must be set");
87+
this.addon.settings_main_aci318.property_bottom_limit_values_of_crack_width = GetConcreteDesignLimitCrackWidthValueType(property_bottom_limit_values_of_crack_width);
88+
}
89+
if (typeof property_user_defined_limit_values_of_crack_width !== "undefined") {
90+
ASSERT(this.addon.settings_main_aci318.property_design_with_direct_crack_width_calculation, "Design with direct crack width calculation must be on");
91+
this.addon.settings_main_aci318.property_user_defined_limit_values_of_crack_width = property_user_defined_limit_values_of_crack_width;
92+
}
93+
if (typeof property_user_defined_top_limit_values_of_allowable_crack !== "undefined") {
94+
ASSERT(this.addon.settings_main_aci318.property_user_defined_limit_values_of_crack_width, "User-defined limit values of crack width must be set");
95+
this.addon.settings_main_aci318.property_user_defined_top_limit_values_of_allowable_crack = property_user_defined_top_limit_values_of_allowable_crack;
96+
}
97+
if (typeof property_user_defined_bottom_limit_values_of_allowable_crack !== "undefined") {
98+
ASSERT(this.addon.settings_main_aci318.property_user_defined_limit_values_of_crack_width, "User-defined limit values of crack width must be set");
99+
this.addon.settings_main_aci318.property_user_defined_bottom_limit_values_of_allowable_crack = property_user_defined_bottom_limit_values_of_allowable_crack;
100+
}
101+
if (typeof property_minimum_longitudinal_reinforcement_shrinkage_and_temperature !== "undefined") {
102+
this.addon.settings_main_aci318.property_minimum_longitudinal_reinforcement_shrinkage_and_temperature = property_minimum_longitudinal_reinforcement_shrinkage_and_temperature;
103+
}
104+
if (typeof property_surface_top_reinforcement_direction_phi1 !== "undefined") {
105+
ASSERT(this.addon.settings_main_aci318.property_minimum_longitudinal_reinforcement_shrinkage_and_temperature, "Minimum longitudinal reinforcement due to shrinkage and temperature must be on");
106+
this.addon.settings_main_aci318.property_surface_top_reinforcement_direction_phi1 = property_surface_top_reinforcement_direction_phi1;
107+
}
108+
if (typeof property_surface_top_reinforcement_direction_phi2 !== "undefined") {
109+
ASSERT(this.addon.settings_main_aci318.property_minimum_longitudinal_reinforcement_shrinkage_and_temperature, "Minimum longitudinal reinforcement due to shrinkage and temperature must be on");
110+
this.addon.settings_main_aci318.property_surface_top_reinforcement_direction_phi2 = property_surface_top_reinforcement_direction_phi2;
111+
}
112+
if (typeof property_surface_bottom_reinforcement_direction_phi1 !== "undefined") {
113+
ASSERT(this.addon.settings_main_aci318.property_minimum_longitudinal_reinforcement_shrinkage_and_temperature, "Minimum longitudinal reinforcement due to shrinkage and temperature must be on");
114+
this.addon.settings_main_aci318.property_surface_bottom_reinforcement_direction_phi1 = property_surface_bottom_reinforcement_direction_phi1;
115+
}
116+
if (typeof property_surface_bottom_reinforcement_direction_phi2 !== "undefined") {
117+
ASSERT(this.addon.settings_main_aci318.property_minimum_longitudinal_reinforcement_shrinkage_and_temperature, "Minimum longitudinal reinforcement due to shrinkage and temperature must be on");
118+
this.addon.settings_main_aci318.property_surface_bottom_reinforcement_direction_phi2 = property_surface_bottom_reinforcement_direction_phi2;
119+
}
120+
};
121+
122+
/**
123+
* Sets Deflection Analysis
124+
* @param {Boolean} property_limitation_of_deflection_enabled Limitation of deflection, can be undefined (is not set, true as default)
125+
* @param {Number} property_deflection_limit_support_on_both_sides Limit values of allowable deflection - Support on both sides, can be undefined (is not set, 240 as default)
126+
* @param {Number} property_deflection_limit_one_sided_support Limit values of allowable deflection - One-sided support, can be undefined (is not set, 240 as default)
127+
* @param {Boolean} property_tension_stiffening_effect_enabled Consider resistance of concrete between cracks (tension stiffening effect), can be undefined (is not set, true as default)
128+
* @param {Boolean} property_minimum_zeta_enabled Consider minimum value of distribution factor, can be undefined (is not set, false as default)
129+
* @param {Number} property_minimum_zeta_value Minimum value of distribution factor, can be undefined (is not set, 0.5 as default)
130+
* @param {Boolean} property_activate_time_dependent_deflections Calculation of time-dependent deflections, can be undefined (is not set, true as default)
131+
* @param {Boolean} property_time_dependent_factor Time-dependent factor acc. to table 24.2.4.1.3, can be undefined (is not set, true as default)
132+
* @param {Number} property_deflection_duration_of_load Duration of load, can be undefined (is not set, 60 months as default)
133+
* @param {Boolean} property_time_dependent_material_properties Time-dependent material properties (creep, shrinkage) acc. to ACI 435, can be undefined (is not set, false as default)
134+
*/
135+
ConcreteDesignServiceabilityConfigurationACI.prototype.SetDeflectionAnalysis = function (property_limitation_of_deflection_enabled,
136+
property_deflection_limit_support_on_both_sides,
137+
property_deflection_limit_one_sided_support,
138+
property_tension_stiffening_effect_enabled,
139+
property_minimum_zeta_enabled,
140+
property_minimum_zeta_value,
141+
property_activate_time_dependent_deflections,
142+
property_time_dependent_factor,
143+
property_deflection_duration_of_load,
144+
property_time_dependent_material_properties) {
145+
SetConcreteDesignServiceabilityConfigurationDeflectionAnalysis(this.addon.settings_main_aci318, property_limitation_of_deflection_enabled, property_deflection_limit_support_on_both_sides,
146+
property_deflection_limit_one_sided_support, property_tension_stiffening_effect_enabled, undefined, property_minimum_zeta_enabled, property_minimum_zeta_value, property_activate_time_dependent_deflections,
147+
property_time_dependent_factor, property_deflection_duration_of_load, undefined, property_time_dependent_material_properties)
148+
};
149+
150+
/**
151+
* Sets Crack state detection
152+
* @param {String} crack_state_detection Crack state detection (
153+
* CALCULATED_FROM_ASSOCIATED_LOAD (Crack state calculated from associated load),
154+
* DETERMINED_AS_ENVELOPE_FROM_ALL_DESIGN_SITUATIONS (Crack state determined as envelope from all serviceability design situations),
155+
* INDEPENDENT_OF_LOAD (Crack state independent of load)) can be undefined (is not set, CALCULATED_FROM_ASSOCIATED_LOAD as default)
156+
*/
157+
ConcreteDesignServiceabilityConfigurationACI.prototype.SetCrackStateDetection = function (crack_state_detection) {
158+
SetConcreteDesignServiceabilityConfigurationCrackStateDetection(this.addon.settings_main_aci318, crack_state_detection);
159+
};
160+
161+
function GetConcreteDesignLimitCrackWidthValueType(crack_width_type) {
162+
return EnumValueFromJSHLFTypeName(
163+
crack_width_type,
164+
"crack width",
165+
{
166+
"01_USE_IN_WATER_RETAINING_STRUCTURES": main_slsconfig_concrete_design_aci318.E_CRACK_WIDTH_01_USE_IN_WATER_RETAINING_STRUCTURES,
167+
"02_SEAWATER_AND_SEAWATER_SPRAY": main_slsconfig_concrete_design_aci318.E_CRACK_WIDTH_02_SEAWATER_AND_SEAWATER_SPRAY,
168+
"02_DEICING_CHEMICALS": main_slsconfig_concrete_design_aci318.E_CRACK_WIDTH_02_DEICING_CHEMICALS,
169+
"03_HUMIDITY_MOIST_AIR_SOIL": main_slsconfig_concrete_design_aci318.E_CRACK_WIDTH_03_HUMIDITY_MOIST_AIR_SOIL,
170+
"04_DRY_AIR_OR_PROTECTIVE_MEMBRANE": main_slsconfig_concrete_design_aci318.E_CRACK_WIDTH_04_DRY_AIR_OR_PROTECTIVE_MEMBRANE
171+
},
172+
main_slsconfig_concrete_design_aci318.E_CRACK_WIDTH_03_HUMIDITY_MOIST_AIR_SOIL);
173+
}

0 commit comments

Comments
 (0)