PCL Reference Manual > Property Assignment Functions > Beam Library
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX''">XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX''">   
Beam Library
This section explains the functions that pertain to beam properties.
  
arbitrary_read_file
( filename, npoints, nloops, points, nploop, srp )
Description:
 
 
Function to read boundary points and stress recovery points of an arbitrary section in a given file, and load the points into the spreadsheet in the Beam Library form.
Input:
 
 
STRING
filename
The name of a file listing the boundary points of an arbitrary beam section (in X,Y coordinates, one point per line) followed by the stress recovery points (in point indexes.)
Output:
 
 
INTEGER
npoints
Total number of points.
INTEGER
nloops
Total number of boundary loops.
REAL
points (VIRTUAL)
X,Y coordinates of all loop points.
INTEGER
nploop (VIRTUAL)
Number of points on each boundary loop.
INTEGER
srp (VIRTUAL)
Stress recovery point based on the indexes of the points array.
The file format for the boundary loops that Read File accepts is very straightforward. The only tokens used are two headers: "Boundary Loops" and "Stress Recovery Points." Under "Boundary Loops" the XY pairs of the boundary points are listed, one pair per line. If more than one loop are entered, a blank line is used to separate the loops. Each loop with its points will be read into the spreadsheet sequentially. Stress recovery points are supported, but not required. To input the stress recovery points, "Stress Recovery Points" header should be added below the XY pairs and the point indexes which are designated as Point C, D, E, and F are listed on the line underneath the header. Here is an example that has 2 loops with 5 points each. The first stress recovery point is the first point in the second loop. The other stress recovery points are all in the first loop.
Boundary Loops
0. 0. 
4. 0.
4. 8.
0. 8.
0. 0.
2. 2. 
3. 2.
3. 3.
2. 3.
2. 2.
Stress Recovery Points
6 2 1 4 
  
arbitrary_section_create
( section_name, npoints, nloops, points, nploop, srp)
Description:
 
 
Creates a new arbitrary shape beam section with the given section name, boundary loops and stress recovery points.
Input:
 
 
STRING
section_name[31]
Section name.
INTEGER
npoints
Total number of points.
INTEGER
nloops
Total number of boundary loops.
REAL
points(npoints,2)
X,Y coordinates of all loop points.
INTEGER
nploop(nloops)
Number of points on each boundary loop.
INTEGER
srp(4)
Stress recovery point based on the indexes of the points array.
Output:
 
 
INTEGER
<Return Value>
This function returns a value of 0 when executed successfully and a non zero value to indicate a change in status or an error.
Error Conditions:
 
1
Invalid total number of points.
2
The number of loops is outside the valid range of 1 - 8.
3
Invalid number of points is found in a loop. (Fewer than 3 or greater than 150.)
7
Invalid license.
13000025
Duplicate name.
13000210
The system is out of virtual memory.
13000211
Virtual memory has been exhausted.
29002040
Beam Section %A% already exists. Do you wish to overwrite?
29002042
Beam Section Name is blank. Input a Beam Section Name.
  
arbitrary_section_display
( section_name, option, npoints, nloops, points, nploop, srp )
Description:
 
 
Function to create a display of an arbitrary section in a graphic viewport. It plots the geometry of the section, and depending on the given option, it calculates and displays the properties of the arbitrary section.
Input:
 
 
STRING
section_name[]
The name of an arbitrary section to be displayed.
STRING
option[]
= "boundary" if only the boundary loops and points to be displayed.
= "properties" if section properties to be calculated and displayed with the boundary.
INTEGER
npoints
Total number of points.
INTEGER
nloops
Total number of boundary loops.
REAL
points(npoints,2)
X,Y coordinates of all loop points.
INTEGER
nploop(nloops)
Number of points on each boundary loop.
INTEGER
srp(4)
Stress recovery point based on the indexes of the points array.
Output:
 
 
None.
 
 
  
arbitrary_section_modify
( old_name, new_name, npoints, nloops, points, nploop, srp)
Description:
 
 
Modifies an existing arbitrary shape beam section with the given section name, boundary loops and stress recovery points.
Input:
 
 
STRING
old_name[31]
The name of an existing section to be modified.
STRING
new_name[31]
The new section name to be used.
INTEGER
npoints
Total number of points.
INTEGER
nloops
Total number of boundary loops.
REAL
points(npoints,2)
X,Y coordinates of all loop points.
INTEGER
nploop(nloops)
Number of points on each boundary loop.
INTEGER
srp(4)
Stress recovery point based on the indexes of the points array.
Output:
 
 
INTEGER
<Return Value>
This function returns a value of 0 when executed successfully and a non zero value to indicate a change in status or an error.
Error Conditions:
 
1
Invalid total number of points.
2
The number of loops is outside the valid range of 1 - 8.
3
Invalid number of points is found in a loop. (Fewer than 3 or greater than 150.)
7
Invalid license.
13000210
The system is out of virtual memory.
13000211
Virtual memory has been exhausted.
29002042
Beam Section Name is blank. Input a Beam Section Name.
  
arbitrary_section_report
(section_name, npoints, nloops, points, nploop, srp)
Description:
 
 
Write section properties and the information of loops and points for an arbitrary section to the report file.
Input:
 
 
STRING
section_name[]
Section name.
INTEGER
npoints
Total number of points.
INTEGER
nloops
Total number of boundary loops.
REAL
points(npoints,2)
X,Y coordinates of all loop points.
INTEGER
nploop(nloops)
Number of points on each boundary loop.
INTEGER
srp(4)
Stress recovery point based on the indexes of the points array.
Output:
 
 
None
 
 
  
arbitrary_select_surface
( surface_picklist, curv_factor, transl, npoints, nloops, points, nploop )
Description:
 
 
Function to find the sampling points on the boundary of the given surface and load the points into the spreadsheet.
Input:
 
 
STRING
surface_picklist
Picklist of a surface on which the boundary points to be found and loaded to the spreadsheet.
REAL
curv_factor
Maximum curvature error ( .01 <= h/L <= .25 ) allowed for sampling points on a curved edge.
LOGICAL
transl
Whether or not to translate the boundary points so that the first point of the first loop coincides with the origin.
Output:
 
 
INTEGER
npoints
Total number of points.
INTEGER
nloops
Total number of boundary loops.
REAL
points(VIRTUAL)
X,Y coordinates of all loop points.
INTEGER
nploop(VIRTUAL)
Number of points on each boundary loop.
Error Conditions:
 
1
Surface selected is meshed and cannot be processed.
2
Property evaluation fails.
3
The number of points found on a loop exceeds 150.
29001001
Unable to allocate the necessary memory.
29002060
An error occurred while computing Beam Section properties. Check the boundary.
29002056
An error occurred while computing Beam Section properties. Check dimensions.
  
beam_section_create
(beam_name, beam_shape, beam_data)
Description:
 
 
This function creates a new beam section with the given name, shape, and a list of dimensions.
Input:
 
 
STRING
beam_name[31]
This value specifies the name of the beam section to be created.
STRING
beam_shape[8]
This value specifies the shape name of the beam section. See the remarks below for more information.
STRING
beam_data[31]()
This value specifies the data defining the dimensions of the beam.
Output:
 
 
INTEGER
<Return Value>
This function returns a value of 0 when executed successfully and a non zero value to indicate a change in status or an error.
Error Conditions:
 
13000025
Duplicate name
13000121
The property value requested was not found
13000210
The system is out of virtual memory.
13000211
Virtual memory has been exhausted.
29002040
Beam Section %A% already exists. Do you wish to overwrite?
29002042
Beam Section Name is blank. Input a Beam Section Name.
29002043
Beam Section Type %A% Invalid.
29002044
Wrong number of Beam Section Dimensions Input.
29002046
Invalid Beam Section Dimension %A%.
29003007
Section %A% associated with Element Property data and is not deleted.
30001101
Field %A% does not exist.
Remarks:
The input value beam_shape can have the following values.
:
 
Value
Description
 
 
 
 
“I”
for I beam
 
“L”
for angle
 
“T”
for blade
 
“CHAN”
for channel
 
“TUBE”
for tube or pipe
 
“ROD”
for circular solid rod
 
“BOX”
for rectangular hollow bar with symmetric walls
 
“BAR”
for rectangular solid bar
 
“BOX1”
for rectangular hollow bar with unsymmetric walls
 
“Z”
for Z shape beam
 
“HAT”
for hat shape beam
 
“CROSS”
for cross shape beam
 
“HEXA”
for hexagonal beam
Example:
Please see beam_section_create.
   
beam_section_delete
(beam_name)
Description:
 
 
This function deletes a list of beam sections.
Input:
 
 
STRING
beam_name[31]()
This value specifies the names of the beams to be deleted.
Output:
 
 
INTEGER
<Return Value>
This function returns a value of 0 when executed successfully and a non zero value to indicate a change in status or an error.
Error Conditions:
 
13000121
The property value requested was not found
13000210
The system is out of virtual memory.
13000213
A database lookup failed to locate the target index key.
29003007
Section %A% associated with Element Property data and is not deleted.
Remarks:
None.
Example:
Please see beam_section_delete.
  
beam_section_display
(beam_shape, beam_name, beam_data, ent_or_loc, ent_loc_data, field_location)
Description:
 
 
This function calculates the beam cross section properties, and displays the beam cross section and its properties in a graphic viewport.
Input:
 
 
STRING
beam_shape[]
This value specifies the shape name of the beam section. See the remarks below for more information.
STRING
beam_name[]
This value specifies the name of the beam section to be written.
STRING
beam_data[]()
This value specifies a string array of dimensions in order of the labels shown on the beam library form. Strings of real numbers and field names prefixed by “f:” are allowed.
STRING
ent_or_loc[]
This value specifies, if the input value beam_data contains any fields, that the field data be evaluated as a geometric entity when this value is set to “ENTITY” or that the field data will be evaluated at XYX coordinates when this value is set to “COORD”.
STRING
ent_loc_data[]
This value specifies the geometric entity or XYZ coordinate information if the input value beam_data contains any fields.
REAL
field_location
This value specifies the parametric location at which fields are evaluated. This value is used only if the input value beam_data contains any fields and the input value ent_or_loc is set to “ENTITY”. This value must be equal to or greater than 0 and equal to or less than 1.
Output:
 
 
INTEGER
<Return Value>
This function returns a value of 0 when executed successfully and a non zero value to indicate a change in status or an error.
Error Conditions:
 
This function can return error values which have no association with an error message.
Remarks:
The input value shape can have the following values:
:
 
Value
Description
 
 
 
 
“I”
for I beam
 
“L”
for angle
 
“T”
for blade
 
“CHAN”
for channel
 
“TUBE”
for tube or pipe
 
“ROD”
for circular solid rod
 
“BOX”
for rectangular hollow bar with symmetric walls
 
“BAR”
for rectangular solid bar
 
“BOX1”
for rectangular hollow bar with unsymmetric walls
 
“Z”
for Z shape beam
 
“HAT”
for hat shape beam
 
“CROSS”
for cross shape beam
 
“HEXA”
for hexagonal beam
This function can display a fatal popup message form with the following messages:
Example:
Please see beam_section_display.
   
beam_section_modify
(beam_name, new_name, beam_shape, beam_data)
Description:
 
 
This function modifies an existing beam section by replacing its name, shape, and dimensions.
Input:
 
 
STRING
beam_name[31]
This value specifies the name of the beam section to be modified.
STRING
new_name[31]
This value specifies the new name of the beam section.
STRING
beam_shape[31]
This value specifies the shape name of the beam section. See the remarks below for more information.
STRING
beam_data[31]()
This value specifies the data defining the dimensions of the beam.
Output:
 
 
INTEGER
<Return Value>
This function returns a value of 0 when executed successfully and a non zero value to indicate a change in status or an error.
Error Conditions:
 
13000025
Duplicate name
13000211
Virtual memory has been exhausted.
13000213
A database lookup failed to locate the target index key.
29002042
Beam Section Name is blank. Input a Beam Section Name.
29002043
Beam Section Type %A% Invalid.
29002044
Wrong number of Beam Section Dimensions Input.
29002046
Invalid Beam Section Dimension %A%.
30001101
Field %A% does not exist.
Remarks:
The input value beam_shape can have the following values:
 
 
Value
Description
 
 
 
 
“I”
for I beam
 
“L”
for angle
 
“T”
for blade
 
“CHAN”
for channel
 
“TUBE”
for tube or pipe
 
“ROD”
for circular solid rod
 
“BOX”
for rectangular hollow bar with symmetric walls
 
“BAR”
for rectangular solid bar
 
“BOX1”
for rectangular hollow bar with unsymmetric walls
 
“Z”
for Z shape beam
 
“HAT”
for hat shape beam
 
“CROSS”
for cross shape beam
 
“HEXA”
for hexagonal beam
Example:
Please see beam_section_modify.
  
beam_section_report
(beam_shape, beam_name, beam_data, ent_or_loc, ent_loc_data, field_location)
Description:
 
 
This function writes the given information of a beam section and the calculated section properties to the report file.
Input:
 
 
STRING
beam_shape[]
This value specifies the shape name of the beam section. See the remarks below for more information.
STRING
beam_name[]
This value specifies the name of the beam section to be written.
STRING
beam_data[]()
This value specifies the data defining the dimensions of the beam.
STRING
ent_or_loc[]
This value specifies, if the input value beam_data contains any fields, that the field data be evaluated as a geometric entity when this value is set to “ENTITY” or that the field data will be evaluated at XYX coordinates when this value is set to “COORD”.
STRING
ent_loc_data[]
This value specifies the geometric entity or XYZ coordinate information if the input value beam_data contains any fields.
REAL
field_location
This value specifies the parametric location at which fields are evaluated. This value is used only if the input value beam_data contains any fields and the input value ent_or_loc is set to “ENTITY”. This value must be equal to or greater than 0 and equal to or less than 1.
Output:
 
 
INTEGER
<Return Value>
This function returns a value of 0 when executed successfully and a non zero value to indicate a change in status or an error.
Error Conditions:
 
1
This is an internal status condition. There is no corresponding status message in the message database.
Remarks:
The input value beam_shape can have the following values:
 
 
Value
Description
 
 
 
 
“I”
for I beam
 
“L”
for angle
 
“T”
for blade
 
“CHAN”
for channel
 
“TUBE”
for tube or pipe
 
“ROD”
for circular solid rod
 
“BOX”
for rectangular hollow bar with symmetric walls
 
“BAR”
for rectangular solid bar
 
“BOX1”
for rectangular hollow bar with unsymmetric walls
 
“Z”
for Z shape beam
 
“HAT”
for hat shape beam
 
“CROSS”
for cross shape beam
 
“HEXA”
for hexagonal beam
This function can display a fatal popup message form with the following messages:
Example:
Please see beam_section_report.
  
bl_get_arb_beam_section_data
(id, points, nploop, srp )
Description:
 
 
Function to find the X,Y coordinates of the boundary points, the numbers of points on each loop, and the stress recovery points with the given database section ID.
Input:
 
 
INTEGER
id
The database ID of an existing arbitrary section.
Output:
 
 
REAL
points(npoints,2)
X,Y coordinates of all boundary points in sequence.
INTEGER
nploop(nloops)
Number of points on each boundary loop.
INTEGER
srp(4)
Stress recovery points using the indexes in the points array.
Return:
 
 
INTEGER
status
The status from database function calls (OK = 0 ).
  
bl_get_arb_num_points_loops
( id, npoints, nloops )
Description:
 
 
Function to find the number of points and the number of loops with the given section ID.
Input:
 
 
INTEGER
id
The database ID of an existing arbitrary section.
Output:
 
 
INTEGER
npoints
The total number of boundary points of the arbitrary section.
INTEGER
nloops
The number of boundary loops of the arbitrary section.
Return:
 
 
INTEGER
status
The status from database function calls (OK = 0 ).
  
blgetcentersarby
( entyp, prop, centroid, shear )
Description:
 
 
This function finds the coordinates of the shear center of an arbitrary section with the given section properties and centroid coordinates.
Input:
 
 
INTEGER
entyp
Entity type =1 for PBAR, =2 for PBEAM.
REAL
prop (30)
Section properties calculated in the order of the property fields in the MSC Nastran entries.
REAL
centroid (2)
X,Y coordinates of the centroid.
Output:
 
 
REAL
shear (2)
X,Y coordinates of the shear center of the arbitrary section.
  
blgetperimarby
( np, points, perim )
Description:
 
 
Function to calculate the exterior perimeter of an arbitrary section.
Input:
 
 
INTEGER
np
The number of points on the outer loop (Loop 1.)
REAL
points (np,2)
X,Y coordinates of all boundary points in sequence.
Output:
 
 
REAL
perim
The exterior perimeter of the arbitrary section.
  
blgetproparbyCheck
( entyp, npoints, nloops, points, nploop, srp, prop, nprop, centroid )
Description:
 
 
Function to compute the sectional properties for a given arbitrary section boundary defined by a number of loops each containing a series of points. This function requires a license for the beam evaluator. If a license is not available, it will return a value of 7, and display a message.
Input:
 
 
INTEGER
entyp
Entity type =1 for PBAR, =2 for PBEAM.
INTEGER
npoints
Number of total boundary points.
INTEGER
nloops
Number of boundary loops.
REAL
points(npoints,2)
X,Y coordinates of all boundary points in sequence.
INTEGER
nploop(nloops)
Number of points on each boundary loop.
INTEGER
srp(4)
Stress recovery points using the indexes in the points array.
Output:
 
 
REAL
prop (30)
Section properties calculated in the order of the property fields in the MSC Nastran entries. (See below)
INTEGER
nprop
The number of valid properties in the prop array.
REAL
centroid (2)
XY coordinates of the centroid.
Return:
 
 
INTEGER
status
0 - OK
1,2,3 - invalid section
5 - invalid entyp
6 - zero area
7 - No license
prop array values:
:
PBAR (entyp = 1)
PBEAM (entyp = 2)
1
A
1
A
2
I1
2
I1
3
I2
3
I2
4
J
4
I12
5
NSM*
5
J
6
FE*
6
NSM*
7
C1
7
C1
8
C2
8
C2
9
D1
9
D1
10
D2
10
D2
11
E1
11
E1
12
E2
12
E2
13
F1
13
F1
14
F2
14
F2
15
K1
15
K1
16
K2
16
K2
17
I12
17
S1*
 
 
18
S2*
 
 
19
NSIA*
 
 
20
NSIB*
 
 
21
CWA
 
 
22
CWB
 
 
23
M1A*
 
 
24
M2A*
 
 
25
M1B*
 
 
26
M2B*
 
 
27
N1A
 
 
28
N2A
 
 
29
N1B
 
 
30
N2B
* = These properties are not computed and are returned as 0.0.
  
cline_section_create
( section_name, numbranches, bbx, bby, xloc, yloc, Tb, Te, bdx, bdy, edx, edy, slen, srp, ndiv, arctol )
Description:
 
 
Create a centerline section with the given section name and branch information.
Input:
 
 
STRING
section_name
Section name
INTEGER
numbranches
Number of branches "n".
REAL
bbx
Beginning x point.
REAL
bby
Beginning y point.
REAL (n)
xloc
Ending x points for each branch.
REAL (n)
yloc
Ending y points for each branch.
REAL (n)
Tb
Beginning thicknesses for each branch.
REAL (n)
Te
Ending thicknesses for each branch.
REAL (n)
bdx
Beginning x slopes for each branch.
REAL (n)
bdy
Beginning y slopes for each branch.
REAL (n)
edx
Ending x slopes for each branch.
REAL (n)
edy
Ending y slopes for each branch.
REAL (n)
slen
Arc lengths for each branch.
INTEGER (4)
srp
Stress Recovery points.
INTEGER (n)
ndiv
# Division
REAL
arctol
Max Chordal deviation for curved sections.
Output:
 
 
None.