section

package module
v0.0.0-...-3966277 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 19, 2023 License: MIT Imports: 8 Imported by: 2

README

section

cross section property

Coverage

go test -coverprofile=coverage.out
go tool cover -html=coverage.out

Documentation

Index

Examples

Constants

View Source
const (
	Eps     = 1e-6
	IterMax = 200
)

Variables

View Source
var Angles = []Angle{
	{"L50x5", 0.050, 0.005, 0.007, 0.0035},
	{"L60x6", 0.060, 0.006, 0.008, 0.0040},
	{"L63x6", 0.063, 0.006, 0.007, 0.0040},
	{"L63x6", 0.063, 0.006, 0.008, 0.0040},
	{"L70x7", 0.070, 0.007, 0.009, 0.0045},
	{"L75x7", 0.075, 0.007, 0.008, 0.0045},
	{"L75x8", 0.075, 0.008, 0.009, 0.0045},
	{"L80x8", 0.080, 0.008, 0.010, 0.0050},
	{"L90x9", 0.090, 0.009, 0.011, 0.0055},
	{"L100x10", 0.100, 0.010, 0.012, 0.0060},
	{"L120x12", 0.120, 0.012, 0.013, 0.0065},
	{"L150x15", 0.150, 0.015, 0.016, 0.0080},
}
View Source
var Isections = []Isection{

	{"10B1-ASCM", 0.1000, 0.0550, 0.0041, 0.0057, 0.0070},
	{"12B1-ASCM", 0.1176, 0.0640, 0.0038, 0.0051, 0.0070},
	{"12B2-ASCM", 0.1200, 0.0640, 0.0044, 0.0063, 0.0070},
	{"14B1-ASCM", 0.1374, 0.0730, 0.0038, 0.0056, 0.0070},
	{"14B2-ASCM", 0.1400, 0.0730, 0.0047, 0.0069, 0.0070},
	{"16B1-ASCM", 0.1570, 0.0820, 0.0040, 0.0059, 0.0090},
	{"16B2-ASCM", 0.1600, 0.0820, 0.0050, 0.0074, 0.0090},
	{"18B1-ASCM", 0.1770, 0.0910, 0.0043, 0.0065, 0.0090},
	{"18B2-ASCM", 0.1800, 0.0910, 0.0053, 0.0080, 0.0090},
	{"20B1-ASCM", 0.2000, 0.1000, 0.0055, 0.0080, 0.0110},
	{"25B1-ASCM", 0.2480, 0.1240, 0.0050, 0.0080, 0.0120},
	{"25B2-ASCM", 0.2500, 0.1250, 0.0060, 0.0090, 0.0120},
	{"30B1-ASCM", 0.2980, 0.1490, 0.0055, 0.0080, 0.0130},
	{"30B2-ASCM", 0.3000, 0.1500, 0.0065, 0.0090, 0.0130},
	{"35B1-ASCM", 0.3460, 0.1740, 0.0060, 0.0090, 0.0140},
	{"35B2-ASCM", 0.3500, 0.1750, 0.0070, 0.0110, 0.0140},
	{"40B1-ASCM", 0.3960, 0.1990, 0.0070, 0.0110, 0.0160},
	{"40B2-ASCM", 0.4000, 0.2000, 0.0080, 0.0130, 0.0160},

	{"20K2-ASCM", 0.2000, 0.2000, 0.0080, 0.0120, 0.0130},
	{"25K2-ASCM", 0.2500, 0.2500, 0.0090, 0.0140, 0.0160},
	{"30K2-ASCM", 0.3000, 0.3000, 0.0100, 0.0150, 0.0180},
	{"35K2-ASCM", 0.3500, 0.3500, 0.0120, 0.0190, 0.0200},
	{"40K2-ASCM", 0.4000, 0.4000, 0.0130, 0.0210, 0.0220},

	{"100SH1-ASCM", 0.9900, 0.3200, 0.0160, 0.0210, 0.0300},

	{"IPE160", 0.1600, 0.0820, 0.0050, 0.0074, 0.0090},
	{"IPE180", 0.1800, 0.0910, 0.0053, 0.0080, 0.0090},
	{"IPE200", 0.2000, 0.1000, 0.0056, 0.0085, 0.0120},
	{"IPE240", 0.2400, 0.1200, 0.0062, 0.0098, 0.0150},
	{"IPE300", 0.3000, 0.1500, 0.0071, 0.0107, 0.0150},
	{"IPE500", 0.5000, 0.2000, 0.0102, 0.0160, 0.0370},
	{"IPE550", 0.5500, 0.2100, 0.0111, 0.0172, 0.0412},

	{"HEA140", 0.1330, 0.1400, 0.0055, 0.0085, 0.0120},
	{"HEA160", 0.1520, 0.1600, 0.0060, 0.0090, 0.0150},
	{"HEA180", 0.1710, 0.1800, 0.0060, 0.0095, 0.0150},
	{"HEA200", 0.1900, 0.2000, 0.0065, 0.0100, 0.0180},
	{"HEA240", 0.2300, 0.2400, 0.0075, 0.0120, 0.0210},
	{"HEA300", 0.2900, 0.3000, 0.0085, 0.0140, 0.0270},
	{"HEA500", 0.4900, 0.3000, 0.0120, 0.0230, 0.0270},

	{"HEB140", 0.1400, 0.1400, 0.0070, 0.0120, 0.0120},
	{"HEB160", 0.1600, 0.1600, 0.0080, 0.0130, 0.0150},
	{"HEB180", 0.1800, 0.1800, 0.0085, 0.0140, 0.0150},
	{"HEB200", 0.2000, 0.2000, 0.0090, 0.0150, 0.0180},
	{"HEB240", 0.2400, 0.2400, 0.0100, 0.0170, 0.0210},
	{"HEB300", 0.3000, 0.3000, 0.0110, 0.0190, 0.0270},
}
View Source
var Rectangles = []Rectangle{
	{"Plate 50x5", 0.050, 0.005},
	{"Plate 60x6", 0.060, 0.006},
	{"Plate 75x7", 0.075, 0.007},
	{"Plate 100x10", 0.100, 0.010},
}
View Source
var UPNs = []UPN{
	{"UPN120 DIN 1025-5-1994", 0.1200, 0.0550, 0.0090, 0.0070, 0.0090, 0.0045},
	{"UPN140 DIN 1025-5-1994", 0.1400, 0.0600, 0.0100, 0.0070, 0.0100, 0.0050},
	{"UPN160 DIN 1025-5-1994", 0.1600, 0.0650, 0.0105, 0.0075, 0.0105, 0.0055},
	{"UPN180 DIN 1025-5-1994", 0.1800, 0.0700, 0.0110, 0.0080, 0.0110, 0.0055},
	{"UPN200 DIN 1025-5-1994", 0.2000, 0.0750, 0.0115, 0.0085, 0.0115, 0.0060},
	{"UPN240 DIN 1025-5-1994", 0.2400, 0.0850, 0.0130, 0.0095, 0.0130, 0.0065},
	{"UPN300 DIN 1025-5-1994", 0.3000, 0.1000, 0.0160, 0.0100, 0.0160, 0.0080},
	{"UPN400 DIN 1025-5-1994", 0.4000, 0.1100, 0.0180, 0.0140, 0.0180, 0.0090},

	{"Швеллер 12У ГОСТ 8240", 0.120, 0.052, 0.0078, 0.0048, 0.0075, 0.0030},
	{"Швеллер 16У ГОСТ 8240", 0.160, 0.064, 0.0084, 0.0050, 0.0085, 0.0035},
	{"Швеллер 20У ГОСТ 8240", 0.200, 0.076, 0.0090, 0.0052, 0.0095, 0.0040},
	{"Швеллер 24У ГОСТ 8240", 0.240, 0.090, 0.0100, 0.0056, 0.0105, 0.0040},
	{"Швеллер 30У ГОСТ 8240", 0.300, 0.100, 0.0110, 0.0065, 0.0120, 0.0050},
	{"Швеллер 36У ГОСТ 8240", 0.360, 0.110, 0.0126, 0.0075, 0.0140, 0.0060},
	{"Швеллер 40У ГОСТ 8240", 0.400, 0.115, 0.0135, 0.0080, 0.0150, 0.0060},
}

Functions

func Area

func Area(mesh msh.Msh) (Area float64, Center msh.Node)

func Area3node

func Area3node(na, nb, nc msh.Node) float64

Area3node return area of triangle by coordinates

func Center3node

func Center3node(na, nb, nc msh.Node) (center msh.Node)

The centroid of a triangle is the point of intersection of its medians

func J

func J(b, h float64) float64

J return moment inertia of triangle:

b - size of triangle base
h - heigth of triangle

func Jx3node

func Jx3node(na, nb, nc msh.Node) (j float64)

func Jxx

func Jxx(mesh msh.Msh) float64

func Jxy

func Jxy(mesh msh.Msh) float64

func MoveXOY

func MoveXOY(m *msh.Msh, x, y float64)

func OnAxeX

func OnAxeX(a, b msh.Node) (c msh.Node)

func RotateXOY

func RotateXOY(m *msh.Msh, a float64)

func SortByY

func SortByY(na, nb, nc msh.Node) (_, _, _ msh.Node)

func Sx

func Sx(mesh msh.Msh) float64

first moment of area Sx = integral{y, dA)

func WxPlastic

func WxPlastic(mesh msh.Msh) (w float64)

func Ymax

func Ymax(mesh msh.Msh) float64

Types

type Angle

type Angle struct {
	Name    string
	Width   float64 //b
	Thk     float64 //Thickness
	Radius1 float64 //r1
	Radius2 float64 //r2
}

////////////////////////////////// ////////////////////////////////// //////// Shape: ANGLE //////////// ////////////////////////////////// //////////////////////////////////

  SCHEMA

--*r2
| *
| *thk
b *
| *r1
--*********r2
  |--b----|

func (Angle) Geo

func (a Angle) Geo(prec float64) string

func (Angle) GetName

func (a Angle) GetName() string

type BendingProperty

type BendingProperty struct {
	// https://en.wikipedia.org/wiki/First_moment_of_area
	// https://en.wikipedia.org/wiki/Second_moment_of_area
	// https://en.wikipedia.org/wiki/Section_modulus
	Jxx, Ymax, Wx, Rx, Sx, WxPlastic float64 // bending moments of inertia
	Jyy, Xmax, Wy, Ry, Sy, WyPlastic float64 // bending moments of inertia
	Jxy                              float64 // centrifugal moment of inertia
	Jo, Ro                           float64 // polar moment of inertia

}

Moment inertia calculation:

dA = ax*dy
Jxx = integral(y*y,dA)          // bending moments of inertia
Jyy = integral(x*x,dA)          // bending moments of inertia
Jxy = integral(x*y,dA)          // centrifugal moment of inertia
Jo  = integral(r^2,dA) = Jx+Jy  // polar moment of inertia
ko  = sqrt(Jo/A)

Moment inertia for move system coordinate to (dx,dy):

Jxx` = Jxx + A*dy^2
Jyy` = Jyy + A*dx^2
Jxy` = Jxy + A*dx*dy

Moment inertia for rotate system coordinate on angle O:

Ju  = (Jx+Jy)/2 + (Jx-Jy)/2*cos(2*O) - Jxy*sin(2*O)
Jv  = (Jx+Jy)/2 - (Jx-Jy)/2*cos(2*O) + Jxy*sin(2*O)
Juv = (Jx-Jy)/2*sin(2*O)+Jxy*cos(2*O)
Jo  = Ju+Jv = Jx+Jy

Max/min moment inertia:

tan(2*O) = -2.0*Jxy/(Jx-Jy)
Jmax,min = (Jx+Jy)/2 +- sqrt(((Jx-Jy)/2)^2+Jxy^2)

Matrix of moment inertia:

[ Jxx -Jxy]
[-Jxy  Jyy]

First moment of area:

Sx = integral(y,dA)
Sy = integral(x,dA)

func (*BendingProperty) Alpha

func (b *BendingProperty) Alpha() float64

In principal axes, that are rotated by an angle θ relative to original centroidal ones x,y, the product of inertia becomes zero.

func (*BendingProperty) Calculate

func (b *BendingProperty) Calculate(mesh msh.Msh)

type Cylinder

type Cylinder struct {
	Name string
	Od   float64
	Thk  float64 //thk
}

SCHEMA

  **   DIA
*    *
*    * THK
  **

func (Cylinder) Geo

func (c Cylinder) Geo(prec float64) string

func (Cylinder) GetName

func (c Cylinder) GetName() string

type Geor

type Geor interface {
	Geo(prec float64) string
	GetName() string
}

func Get

func Get(name string) (_ Geor, err error)
Example
package main

import (
	"fmt"
	"os"

	"github.com/Konstantin8105/section"
)

func main() {
	g, err := section.Get("20B1-ASCM")
	if err != nil {
		panic(err)
	}
	fmt.Fprintf(os.Stdout, "Type:%T\nDescription:%#v\n", g, g)
}
Output:

Type:section.Isection
Description:section.Isection{Name:"20B1-ASCM", H:0.2, B:0.1, Tw:0.0055, Tf:0.008, Radius:0.011}

func GetList

func GetList() (list []Geor)

type Isection

type Isection struct {
	Name   string
	H      float64 // height
	B      float64 // width
	Tw     float64 //tw
	Tf     float64 //tf
	Radius float64 //r
}

func (Isection) Geo

func (is Isection) Geo(prec float64) string

func (Isection) GetName

func (i Isection) GetName() string

type Property

type Property struct {
	Name string

	X, Y  float64 // location of center point
	Alpha float64 // angle from base coordinates

	A float64 // area

	// Property at base point
	AtBasePoint BendingProperty

	// Property at center of section
	AtCenterPoint BendingProperty

	// Property at center of section with rotation
	//	* minimal moment inertia on axe x
	//	* maximal moment inertia on axe y
	OnSectionAxe BendingProperty
}

func Calculate

func Calculate(g Geor) (p *Property, err error)

func GetProperty

func GetProperty(g Geor) (p Property, err error)

func (Property) GetName

func (p Property) GetName() string

type Rectangle

type Rectangle struct {
	Name string
	H    float64 //height
	Thk  float64 //thickness
}

Rectangle

--*
| *
h *
| *
--*
  thk

func (Rectangle) Geo

func (r Rectangle) Geo(prec float64) string

func (Rectangle) GetName

func (r Rectangle) GetName() string

type Tsection

type Tsection struct {
	Name string

	H   float64 // height
	Thk float64 // thickness

	L    float64 // length
	Thk2 float64 // thickness
}

Tsection

      Thk
       * -
       * |
       * H
       * |
       * -
************** Thk2
|----- L ----|

func (Tsection) Geo

func (t Tsection) Geo(prec float64) string

func (Tsection) GetName

func (t Tsection) GetName() string

type UPN

type UPN struct {
	Name    string
	H       float64 //h height
	B       float64 //b  Width
	Tf      float64 //tf
	Tw      float64 //tw
	Radius1 float64 //r1
	Radius2 float64 //r2

}

UPN

--*********r2
| *r1   tf
| *
| *
| *
h *tw
| *
| *
| *
| *r1   tf
--*********r2
  |--b----|

func (UPN) Geo

func (u UPN) Geo(prec float64) string

func (UPN) GetName

func (u UPN) GetName() string

func (UPN) String

func (u UPN) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL