"BOKU"のITな日常

62歳・文系システムエンジニアの”BOKU”は日々勉強を楽しんでます

コンクリートの中性化の資料を見て,Pythonで軽くシュミレーション(笑)

コンクリート造住宅(マンションとか)の寿命という話で、よくでてくる「コンクリートの中性化」を調べて、Pythonで「中性化速度計算」のプログラムを書いてみました。

f:id:arakan_no_boku:20200624164258p:plain

 

コンクリートの中性化とは

 

マンションのような建物(鉄筋コンクリート造)だと、上記図のように、コンクリートの中で鉄筋がはいってます。

コンクリートは性質上、上からの圧力(重さ)には強いのですが、ひっぱる力に弱くてひび割れやすい弱点があるので、それを補うためということです。

コンクリートの中の鉄筋は、コンクリートが強いアルカリ性を保っている限りは「不動態被膜」というものに守られるので、錆びたり腐食したりしません。

でも、コンクリートは空気中の二酸化炭素によって、少しずつ中性化していきますので、その中性化が鉄筋の埋まっているところに達すると、「不動態被膜」が壊れて、鉄筋がさびたり・腐食することで、建物が強度を失い寿命をむかえてしまう・・というわけです。

そのへんのことが「こちらの資料」に分かりやすく書いてありました。

f:id:arakan_no_boku:20200624165456p:plain

 

中性化の進行度合いを計算する式

 

上記資料に、経過年数によって中性化が進行する度合いを計算する式がありました。

f:id:arakan_no_boku:20200624165753p:plain

ふむふむ。

どうも、中性化速度係数というものがわかれば、比較的簡単に計算できそうです。

中性化速度係数は「こちらの資料」に参考になりそうな表がありました。

f:id:arakan_no_boku:20200624170029p:plain

意外だったのは、屋外と屋内で比べると、屋内のほうが中性化の進行係数が大きいことです。

直観的には、雨ざらしになる屋外のほうが、劣化がすすみそうですからね。

でも。

中性化は二酸化炭素によって発生するので、人が居住していて、呼吸によって二酸化炭素を大量に発生させる屋内のほうが中性化がすすむ・・と説明されれば、「なるほどな」と思います。

f:id:arakan_no_boku:20200624170423p:plain

 

Pythonでシュミレーションしてみよう

 

ここまで知ると、少々不安になってきたことがあります。

マンションの寿命の話というと、外壁塗装で空気にふれさせないように守るとか、ひび割れを速やかに修繕しないといけない・・つまり外側の話・・ばかり目につきます。

でも。

マンションの内側の壁から中性化がすすんでも、結局同じことで、かつ、屋内からのほうが進行度合いが速いというのは、どうなんだろうということです。

疑問に思ったら、とりあえず、使い捨てプログラムでも作って試してみましょう。

上記の計算式と、コンクリート打ち放し、モルタルモルタル20mm以上の3つの係数をつかって、鉄筋が外からも中からも同じ深さに埋まっていると仮定した場合、どれぐらいの年数で中性化が鉄筋に到達するのかを、計算してみます。

ソースコードはこんな感じ。

'''
 コンクリートの中性化進行計算
 ・中性化係数
 ・鉄筋深さ
 上記から中性化が進行し、鉄骨に到達する経過年数を求める
 
'''
import math


class Neutral:
    '''
        経過年数ごとの中性化深さを計算し、鉄骨の深さ(depth)に到達したらブレイクする
    '''
    def __init__(self):
        self.result_list = []
        self.result_list_in = []
        self.break_year = 0
        self.dic_paint_kind = ["モルタル20mm以上", "モルタル20mm未満", "コンクリート打ち放し"]

    def calc_result(self, depth, index=0, start_year=1, span=1):
        coefficient_list = [1.51, 1.92, 2.06]
        coefficient_list_in = [3.25, 4.43, 6.35]
        if not 0 <= index <= 2:
            index = 2
        break_year_max = 200
        self.break_year = break_year_max
        self.result_list = []
        self.result_list_in = []
        for y in range(start_year, break_year_max, span):
            r = self.calc(coefficient_list[index], y)
            self.result_list.append(r)
            rin = self.calc(coefficient_list_in[index], y)
            self.result_list_in.append(rin)
            self.break_year = y
            if (r >= depth or rin >= depth):
                print(self.dic_paint_kind[index] + "の場合の寿命=" + str(y) + "年経過時")
                break
        return self.break_year

    '''
        単年の中性化した深さを計算する
    '''

    def calc(self, coefficient, year):
        return coefficient * math.sqrt(year)
    
    # 外側からの中性化深さのリスト
    def get_result_list(self):
        return self.result_list

    # 内側からの中性化深さのリスト
    def get_result_list_in(self):
        return self.result_list_in

    # 内側からの中性化深さのリスト
    def get_break_year(self):
        return self.break_year

補足するほどのことはありませんが。 

外側からと、内側からで経過年数ごとの中性化到達度を計算して、鉄筋の深さ(depth)に到達したらブレイクする・・というものです。

動作確認用はこんな感じ。

n = Neutral()
print(n.calc(1.51, 10))
a = n.calc_result(40.0)
a = n.calc_result(40.0, index=1)
a = n.calc_result(40.0, index=2)

外からも、内からも40mm(4センチ)にしてみました。

なんかの資料で、商業ビルの中性化の資料を読んだとき、その深さが40mmだったので、単純にそれを使わせてもらっただけです。

結果は以下のように表示されました。

モルタル20mm以上の場合の寿命=152年経過時
モルタル20mm未満の場合の寿命=82年経過時
コンクリート打ち放しの場合の寿命=40年経過時 

 だから・・どうした?・・というようなものではあります。

でも。

自分のマンションとかでも、どっかで中性化試験とかやるかもしれませんから、そん時に多少は知識が役にたつかもしれないな・・とは思います。

加えて、外壁塗装ってのの大切さがよくわかりますね。

今回は、こんなところで。

ではでは。