はりの計算式(10) - 境界条件 部分載荷 -

はりの計算式を連載で紹介しています。

 

境界条件 部分載荷 です。

支持条件

tp = 0 単純ばり

tp = 1 片持ち梁(自由固定)

tp = 2 片持ち梁(固定自由)

tp = 3 両端固定

tp = 4 1端ピン他端固定

tp = 5 1端固定他端ピン

境界条件

qA = Q(x=0) せん断力

mA = M(x=0) 曲げモーメント

tA = T(x=0) たわみ角を曲げ剛性 EI で乗じたもの

vA = V(x=0) たわみを曲げ剛性 EI で乗じたもの

からはりを計算するやり方です。

 

計算式本体

 

境界条件

 

 

 

プログラム例

:境界条件 部分載荷
@echo off
ruby -x %0
pause
goto:eof

#!ruby 

# n次分布荷重
def mq4(x, tp, l, a, c, n, w, ra, ma, ta, va, ei = nil, __g__ = 0)
  b = l - a - c
  n = n.abs
  n1 = n + 1.0
  n2 = n + 2.0
  n3 = n + 3.0
  n4 = n + 4.0

  px = w * ( (x - a) / b) ** n * (x < a ? 0 : (x < a + b ? 1 : 0))
  w = w * b / n1 * (x < a + b ? 0 : 1)
  q = ra - px / n1 * (x - a) - w
  m = ma + ra * x - px / (n1 * n2) * (x - a) ** 2 - w * b / n2 - w * (x - a - b)
  t = ta - ma * x - ra / 2 * x ** 2 + px / (n1 * n2 * n3) * (x - a) ** 3 + 
    w * b ** 2 / (n2 * n3) + w * b / n2 * (x - a - b) + w / 2 * (x - a - b) ** 2
  v = va + ta * x - ma / 2 * x ** 2 - ra / 6 * x ** 3 + px / (n1 * n2 * n3 * n4) * (x - a) ** 4 + 
    w * b ** 3 / (n2 * n3 * n4) + w * b ** 2 / (n2 * n3) * (x - a - b) + 
    w * b / (2 * n2) * (x - a - b) ** 2 + w / 6 * (x - a - b) ** 3   + __g__ * (m - ma) * l ** 2

  if ei == nil
    return q, m, t, v
  else
    return q, m, t / ei, v / ei
  end
end

x = 2.5   #m
l = 5.0   #m
w = 10.0  #kN/m
e = 6.5 * 10**6 #kN/m2
t = 0.15  #m
h = 0.30  #m
n = 0
a = 0.0   #m
c = 0.0   #m
g = e/15  #kN/m2

tp = 0 #境界条件

nnn = n
b = l - a - c
ei = e * t * h ** 3 / 12
ga = g * t * h
__g__ = 1.2 * ei / ga / l ** 2

n = n.abs
  n1 = n + 1.0
  n2 = n + 2.0
  n3 = n + 3.0
  n4 = n + 4.0
if tp == 0
# o-----o
  qa = w * b * ( (l - a) * n2 - b * n1) / (l * n1 * n2)
  ma = 0.0
  s1 = n1 * n2 * n3 * b ** 3
  s2 = 3 * n1 * n2 * n4 * (a - l) * b ** 2
  s3 = n1 * n3 * n4 * (3 * a ** 2 - 6 * l * a + 2 * l ** 2) * b
  s4 = n2 * n3 * n4 * (a ** 2 - 3 * l * a + 2 * l ** 2) * a
  ta = w * b * (s1 + s2 + s3 + s4) / (6 * n1 * n2 * n3 * n4 * l)
  va = 0.0
elsif tp == 1
# ------|
  qa = 0.0
  ma = 0.0
  u1 = n1 * n2 * b ** 2
  u2 = 2 * (a - l) * n1 * n3 * b
  u3 = n2 * n3 * (a ** 2 - 2 * l * a + l ** 2)
  ta = -w * b * (u1 + u2 + u3) / (2 * n1 * n2 * n3)
  s1 = n1 * n2 * n3 * b ** 3
  s2 = 3 * n1 * n2 * n4 * a * b ** 2
  s3 = 3 * n1 * n3 * n4 * (a ** 2 - l ** 2) * b
  s4 = n2 * n3 * n4 * (a ** 3 - 3 * l ** 2 * a + 2 * l ** 3)
  s5 = 6 * ( (l - a) * n2 - b * n1) * n3 * n4 * l ** 2 * __g__
  va = w * b * (s1 + s2 + s3 + s4 + s5) / (6 * n1 * n2 * n3 * n4)
elsif tp == 2
# |------
  qa = w * b / n1
  ma = -w * b * (b * n + a * n + b + 2 * a) / (n1 * n2)
  ta = 0.0
  va = 0.0
elsif tp == 3
# |-----|
  u1 = n2 * n3 * n4 * (3 * (a + b) + c) * c ** 2
  u2 = 6 * n4 * (c * n2 + a) * b ** 2
  u3 = 6 * n3 * n4 * a * b * c
  u4 = 6 * n2 * b ** 3
  u5 = 12 * ( (l - a) * n2 - b * n1) * n3 * n4 * __g__ * l ** 2
  qa = w * b * (u1 + u2 + u3 + u4 + u5) / (l ** 3 * (12 * __g__ + 1) * n1 * n2 * n3 * n4)
  s1 = (a * n2 + b * n1) * n3 * n4 * c ** 2
  s2 = 2 * (a + c * n1) * n4 * b ** 2
  s3 = 2 * n3 * n4 * a * b * c
  s4 = 2 * n1 * b ** 3
  s5 = 6 * l * ( (b * (c * n1 + a) + a * c * n2) * n3 + b ** 2 * n1) * n4 * __g__
  ma = -w * b * (s1 + s2 + s3 + s4 + s5) / (l ** 2 * (12 * __g__ + 1) * n1 * n2 * n3 * n4)
  ta = 0.0
  va = 0.0
elsif tp == 4
# o-----|
  u1 = n1 * n2 * n3 * b ** 3
  u2 = 3 * n1 * n2 * n4 * a * b ** 2
  u3 = 3 * n1 * n3 * n4 * b * (a ** 2 - l ** 2)
  u4 = n2 * n3 * n4 * (a ** 3 - 3 * l ** 2 * a + 2 * l ** 3)
  u5 = 6 * n3 * n4 * ( (l - a) * n2 - b * n1) * __g__ * l ** 2
  qa = w * b * (u1 + u2 + u3 + u4 + u5) / (2 * l ** 3 * (3 * __g__ + 1) * n1 * n2 * n3 * n4)
  ma = 0
  s1 = n1 * n2 * n3 * b ** 3
  s2 = n1 * n2 * n4 * (3 * a - 2 * l) * b ** 2
  s3 = n1 * n3 * n4 * (3 * a ** 2 - 4 * l * a + l ** 2) * b
  s4 = n2 * n3 * n4 * (a ** 2 - 2 * l * a + l ** 2) * a
  s5 = 6 * ( (n1 * b * (l - 2 * a) + n2 * a * (l - a)) * n3 - b ** 2 * n1 * n2) * n4 * l * __g__
  ta = w * b * (s1 + s2 + s3 + s4 + s5) / (4 * l * (3 * __g__ + 1) * n1 * n2 * n3 * n4)
  va = 0
elsif tp == 5
# |-----o
  u1 = n1 * n2 * n3 * b ** 3
  u2 = 3 * n1 * n2 * n4 * (a - l) * b ** 2
  u3 = 3 * n1 * n3 * n4 * (a - 2 * l) * a * b
  u4 = n2 * n3 * n4 * (a ** 3 - 3 * l * a ** 2 + 2 * l ** 3)
  u5 = 6 * (l * n2 - (a + b) * n1) * n3 * n4 * l ** 2 * __g__
  qa = w * b * (u1 + u2 + u3 + u4 + u5) / (2 * l ** 3 * (3 * __g__ + 1) * n1 * n2 * n3 * n4)
  s1 = n1 * n2 * n3 * b ** 3
  s2 = 3 * n1 * n2 * n4 * (a - l) * b ** 2
  s3 = n1 * n3 * n4 * (3 * a ** 2 - 6 * l * a + 2 * l ** 2) * b
  s4 = n2 * n3 * n4 * (a ** 2 - 3 * l * a + 2 * l ** 2) * a
  ma = -w * b * (s1 + s2 + s3 + s4) / (2 * l ** 2 * (3 * __g__ + 1) * n1 * n2 * n3 * n4)
  ta = 0
  va = 0
end

if nnn > 0
  q, m, t, v = mq4(x, tp, l, a, c, n, w, qa, ma, ta, va, ei, __g__)
  p [x, q, m, t, v]
else
  q, m, t, v = mq4(l - x, tp, l, c, a, -n, w, qa, ma, ta, va, ei, __g__)
  p [x, -q, m, -t, v]
end

__END__

 

x = 2.5   #m
l = 5.0   #m
w = 10.0  #kN/m
e = 6.5 * 10**6 #kN/m2
t = 0.15  #m
h = 0.30  #m
n = 0
a = 0.0   #m
c = 0.0   #m
g = e/15  #kN/m2

 

計算結果は

となります。[x, q, m, t, v] です。

 

境界条件はマトリクス変位法で解くほうが簡単です。計算式本体は 境界条件から 任意の位置 x のせん断、曲げ、たわみ角、たわみの算定式です。この式は単純ばりでも片持ち梁でも同じです。

 

n = 0 で等分布荷重となります。

 

例題は すぎ集成材 150x300 E65-F225 を想定しています。木材のたわみ計算はせん断変形の影響を考えた方が好ましいと思います。木材とティモシェンコ梁の相性がどうなのかは不明です。目安となる値は算出できると思います。