修正剑桥模型预测-用python3.4
下面是预测结果:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # __author__ = "blzhu" 4 """ 5 python study 6 Date:2017 7 《土的本构关系-罗汀》5.5.2节修正剑桥模型预测——围压sigma3=常数 8 根据ε1求其余的量 9 """ 10 # from numpy import * 11 import numpy as np 12 import string 13 import matplotlib.pyplot as plt 14 # 字体的默认设置中并没有中文字体,所以我们只要手动添加中文字体的名称 15 from pylab import * 16 mpl.rcParams['font.sans-serif'] = ['SimHei'] 17 18 # 基本参数赋值 19 λ = 0.0853 20 κ = 0.0188 21 M = 1.36 22 ν = 0.3 23 e0 = 0.68 24 # sigma3 = 196 25 p = np.array(np.zeros((18, 1))) 26 p[0] = 196.0 27 q = np.array(np.zeros((18, 1))) 28 q[0] = 0.0 29 η = np.array(np.zeros((18, 1))) 30 Dpp = np.array(np.zeros((18, 1))) 31 Dpq = np.array(np.zeros((18, 1))) 32 Dqp = np.array(np.zeros((18, 1))) 33 Dqq = np.array(np.zeros((18, 1))) 34 dε1 = np.array(np.zeros((18, 1))) 35 dε1[1:4] = np.array([[0.005, ], [0.010, ], [0.015]]) 36 dε1[4:] = 0.02 37 dε3 = np.array(np.zeros((18, 1))) 38 dσ1 = np.array(np.zeros((18, 1))) 39 dσ3 = np.array(np.zeros((18, 1))) 40 dp = np.array(np.zeros((18, 1))) 41 dq = np.array(np.zeros((18, 1))) 42 dεv = np.array(np.zeros((18, 1))) 43 εv = np.array(np.zeros((18, 1))) 44 εv[0] = 0.0 45 dεd = np.array(np.zeros((18, 1))) 46 εd = np.array(np.zeros((18, 1))) 47 εd[0] = 0.0 48 σ1 = np.array(np.zeros((18, 1))) 49 σ1[0] = 196.0 50 σ3 = np.array(np.zeros((18, 1))) 51 σ3[0] = 196.0 52 ############################## 53 # 计算 54 for i in range(0,17): 55 dσ3[i + 1] = 0.0 56 σ3[i] = 196 57 σ3[i + 1] = 196 + dσ3[i + 1] 58 59 # # 柔度矩阵元素 60 # 先求Ck和Cp 61 Ck = κ / (1 + e0) 62 Cp = (λ - κ) / (1 + e0) 63 # 再求柔度矩阵元素D 64 η[i] = q[i] / p[i] 65 Dpp[i + 1] = Ck + Cp * ((M ** 2 - η[i] ** 2) / (M ** 2 + η[i] ** 2)) 66 Dpq[i + 1] = Cp * (2 * η[i]) / (M ** 2 + η[i] ** 2) 67 Dqp[i + 1] = Dpq[i+1] 68 Dqq[i + 1] = (2 / 9) * Ck * (1 + ν) / (1 - 2 * ν) + Cp * (4 * η[i] ** 2) / (M ** 4 - η[i] ** 4) 69 dσ1[i + 1] = 9 * p[i] * dε1[i+1] / (Dpp[i+1] + 3 * Dpq[i+1] + 3 * Dqp[i+1] + 9 * Dqq[i+1]) 70 dε3[i + 1] = ((1 / 2.0) * dε1[i+1])* (2 * Dpp[i+1] + 6 * Dpq[i+1] - 3 * Dqp[i+1] - 9 * Dqq[i+1]) / ( 71 Dpp[i+1] + 3 * Dpq[i+1] + 3 * Dqp[i+1] + 9 * Dqq[i+1]) 72 σ1[i + 1] = σ1[i] + dσ1[i + 1] 73 p[i + 1] = (σ1[i + 1] + 2 * σ3[i + 1]) / 3.0 74 q[i + 1] = σ1[i + 1] - σ3[i + 1] 75 η[i + 1] = q[i + 1] / p[i + 1] 76 dp[i + 1] = 1 / 3 * (dσ1[i + 1] + 2 * dσ3[i + 1]) 77 dq[i + 1] = dσ1[i + 1] - dσ3[i + 1] 78 dεv[i + 1] = dε1[i + 1] + 2 * dε3[i + 1] 79 εv[i + 1] = εv[i] + dεv[i + 1] 80 dεd[i + 1] = 2 / 3 * (dε1[i + 1] - dε3[i + 1]) 81 εd[i + 1] = εd[i] + dεd[i + 1] 82 # 数据输出 83 print('p:') 84 print(p) 85 print('q:') 86 print(q) 87 print('εd:') 88 print(εd) 89 print('εv:') 90 print(εv) 91 print('η:') 92 print(η) 93 print('dp:') 94 print(dp) 95 print('dεd:') 96 print(dεd) 97 print('dεv:') 98 print(dεv) 99 # 绘图 100 plt.figure(1)#创建图表1 101 ax1=plt.subplot(111) 102 # plt.plot(p, q, 'b*') 103 plt.xlabel('p(kPa)') 104 plt.ylabel('q(kPa)') 105 plt.title(U'应力路径') 106 plt.plot(εd,η,'r--') 107 plt.plot(εd,εv,'r--') 108 plt.show()
第二个:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # __author__ = "blzhu" 4 """ 5 python study 6 Date:2017 7 《土的本构关系-罗汀》5.5.2节修正剑桥模型预测——p=常数 8 根据ε1求其余的量 9 """ 10 # from numpy import * 11 import numpy as np 12 import string 13 import matplotlib.pyplot as plt 14 # 字体的默认设置中并没有中文字体,所以我们只要手动添加中文字体的名称 15 from pylab import * 16 17 mpl.rcParams['font.sans-serif'] = ['SimHei'] 18 19 # 基本参数赋值 20 λ = 0.0853 21 κ = 0.0188 22 M = 1.36 23 ν = 0.3 24 e0 = 0.68 25 p = np.array(np.zeros((18, 1))) 26 p[0] = 196.0 27 q = np.array(np.zeros((18, 1))) 28 q[0] = 0.0 29 η = np.array(np.zeros((18, 1))) 30 Dpp = np.array(np.zeros((18, 1))) 31 Dpq = np.array(np.zeros((18, 1))) 32 Dqp = np.array(np.zeros((18, 1))) 33 Dqq = np.array(np.zeros((18, 1))) 34 dε1 = np.array(np.zeros((18, 1))) 35 dε1[1:4] = np.array([[0.005, ], [0.010, ], [0.015]]) 36 dε1[4:] = 0.02 37 dε3 = np.array(np.zeros((18, 1))) 38 dσ1 = np.array(np.zeros((18, 1))) 39 dσ3 = np.array(np.zeros((18, 1))) 40 dp = np.array(np.zeros((18, 1))) 41 dq = np.array(np.zeros((18, 1))) 42 dεv = np.array(np.zeros((18, 1))) 43 εv = np.array(np.zeros((18, 1))) 44 εv[0] = 0.0 45 dεd = np.array(np.zeros((18, 1))) 46 εd = np.array(np.zeros((18, 1))) 47 εd[0] = 0.0 48 σ1 = np.array(np.zeros((18, 1))) 49 σ1[0] = 196.0 50 σ3 = np.array(np.zeros((18, 1))) 51 σ3[0] = 196.0 52 ############################## 53 # 计算 54 for i in range(0, 17): 55 # # 柔度矩阵元素 56 # 先求Ck和Cp 57 Ck = κ / (1 + e0) 58 Cp = (λ - κ) / (1 + e0) 59 # 再求柔度矩阵元素D 60 η[i] = q[i] / p[i] 61 Dpp[i + 1] = Ck + Cp * ((M ** 2 - η[i] ** 2) / (M ** 2 + η[i] ** 2)) 62 Dpq[i + 1] = Cp * (2 * η[i]) / (M ** 2 + η[i] ** 2) 63 Dqp[i + 1] = Dpq[i + 1] 64 Dqq[i + 1] = (2 / 9) * Ck * (1 + ν) / (1 - 2 * ν) + Cp * (4 * η[i] ** 2) / (M ** 4 - η[i] ** 4) 65 dσ3[i + 1] = -p[i] * dε1[i + 1] / (Dpq[i + 1] + 3 * Dqq[i + 1]) 66 σ3[i + 1] = σ3[i] + dσ3[i + 1] 67 dσ1[i + 1] = 2 * p[i] * dε1[i + 1] / (Dpq[i + 1] + 3 * Dqq[i + 1]) 68 dε3[i + 1] = ((1 / 2.0) * dε1[i + 1]) * (2 * Dpq[i + 1] - 3 * Dqq[i + 1]) / (Dpq[i + 1] + 3 * Dqq[i + 1]) 69 σ1[i + 1] = σ1[i] + dσ1[i + 1] 70 p[i + 1] = (σ1[i + 1] + 2 * σ3[i + 1]) / 3.0 71 q[i + 1] = σ1[i + 1] - σ3[i + 1] 72 η[i + 1] = q[i + 1] / p[i + 1] 73 dp[i + 1] = 1 / 3 * (dσ1[i + 1] + 2 * dσ3[i + 1]) 74 dq[i + 1] = dσ1[i + 1] - dσ3[i + 1] 75 dεv[i + 1] = dε1[i + 1] + 2 * dε3[i + 1] 76 εv[i + 1] = εv[i] + dεv[i + 1] 77 dεd[i + 1] = 2 / 3 * (dε1[i + 1] - dε3[i + 1]) 78 εd[i + 1] = εd[i] + dεd[i + 1] 79 # 数据输出 80 print('p:') 81 print(p) 82 print('q:') 83 print(q) 84 print('εd:') 85 print(εd) 86 print('εv:') 87 print(εv) 88 print('η:') 89 print(η) 90 print('dp:') 91 print(dp) 92 print('dεd:') 93 print(dεd) 94 print('dεv:') 95 print(dεv) 96 # 绘图 97 plt.figure(1) # 创建图表1 98 ax1 = plt.subplot(111) 99 # plt.plot(p, q, 'b*') 100 plt.xlabel('p(kPa)') 101 plt.ylabel('q(kPa)') 102 plt.title(U'应力路径') 103 plt.plot(εd, η, 'r*') 104 plt.plot(εd, εv, 'r*') 105 plt.show()
第三个:注意增量步一定要合适,不能太大,因为应力路径太贴近屈服面了。
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # __author__ = "blzhu" 4 """ 5 python study 6 Date:2017 7 《土的本构关系-罗汀》5.5.2节修正剑桥模型预测——3-不排水剪切试验 8 根据ε1求其余的量 9 """ 10 # from numpy import * 11 import numpy as np 12 import string 13 import matplotlib.pyplot as plt 14 # 字体的默认设置中并没有中文字体,所以我们只要手动添加中文字体的名称 15 from pylab import * 16 17 mpl.rcParams['font.sans-serif'] = ['SimHei'] 18 19 # 基本参数赋值 20 λ = 0.0853 21 κ = 0.0188 22 M = 1.36 23 ν = 0.3 24 e0 = 0.68 25 p = np.array(np.zeros((18, 1))) 26 p[0] = 196.0 27 q = np.array(np.zeros((18, 1))) 28 q[0] = 0.0 29 η = np.array(np.zeros((18, 1))) 30 Dpp = np.array(np.zeros((18, 1))) 31 Dpq = np.array(np.zeros((18, 1))) 32 Dqp = np.array(np.zeros((18, 1))) 33 Dqq = np.array(np.zeros((18, 1))) 34 dε1 = np.array(np.zeros((18, 1))) 35 # dε1[1:4] = np.array([[0.005, ], [0.010, ], [0.015]]) 36 # dε1[4:] = 0.02 37 dε1[:] = 0.003 38 dε3 = np.array(np.zeros((18, 1))) 39 dσ1 = np.array(np.zeros((18, 1))) 40 dσ3 = np.array(np.zeros((18, 1))) 41 dp = np.array(np.zeros((18, 1))) 42 dq = np.array(np.zeros((18, 1))) 43 dεv = np.array(np.zeros((18, 1))) 44 εv = np.array(np.zeros((18, 1))) 45 εv[0] = 0.0 46 dεd = np.array(np.zeros((18, 1))) 47 εd = np.array(np.zeros((18, 1))) 48 εd[0] = 0.0 49 σ1 = np.array(np.zeros((18, 1))) 50 σ1[0] = 196.0 51 σ3 = np.array(np.zeros((18, 1))) 52 σ3[0] = 196.0 53 ############################## 54 # 计算 55 for i in range(0, 17): 56 # # 柔度矩阵元素 57 # 先求Ck和Cp 58 Ck = κ / (1 + e0) 59 Cp = (λ - κ) / (1 + e0) 60 # 再求柔度矩阵元素D 61 η[i] = q[i] / p[i] 62 Dpp[i + 1] = Ck + Cp * ((M ** 2 - η[i] ** 2) / (M ** 2 + η[i] ** 2)) 63 Dpq[i + 1] = Cp * (2 * η[i]) / (M ** 2 + η[i] ** 2) 64 Dqp[i + 1] = Dpq[i + 1] 65 Dqq[i + 1] = (2 / 9) * Ck * (1 + ν) / (1 - 2 * ν) + Cp * (4 * η[i] ** 2) / (M ** 4 - η[i] ** 4) 66 dσ3[i + 1] = ((p[i]/3) * dε1[i + 1]) *(Dpp[i + 1]+3*Dpq[i + 1])/(Dqp[i + 1]*Dpq[i + 1]-Dqq[i + 1]*Dpp[i + 1]) 67 σ3[i + 1] = σ3[i] + dσ3[i + 1] 68 dσ1[i + 1] = (-p[i]/3.0) * dε1[i + 1] *(2*Dpp[i + 1]-3*Dpq[i + 1])/(Dqp[i + 1]*Dpq[i + 1]-Dqq[i + 1]*Dpp[i + 1]) 69 dε3[i + 1] = (-1 / 2.0) * dε1[i + 1] 70 σ1[i + 1] = σ1[i] + dσ1[i + 1] 71 p[i + 1] = (σ1[i + 1] + 2 * σ3[i + 1]) / 3.0 72 q[i + 1] = σ1[i + 1] - σ3[i + 1] 73 η[i + 1] = q[i + 1] / p[i + 1] 74 dp[i + 1] = (1 / 3.0) * (dσ1[i + 1] + 2 * dσ3[i + 1]) 75 dq[i + 1] = dσ1[i + 1] - dσ3[i + 1] 76 # 不排水剪切路径 77 dεv[i + 1] = dε1[i + 1]+2*dε3[i + 1] 78 εv[i + 1] = εv[i] + dεv[i + 1] 79 dεd[i + 1] = (2.0 / 3.0) * (dε1[i + 1] - dε3[i + 1]) 80 εd[i + 1] = εd[i] + dεd[i + 1] 81 # 数据输出 82 print('p:') 83 print(p) 84 print('q:') 85 print(q) 86 print('εd:') 87 print(εd) 88 print('εv:') 89 print(εv) 90 print('η:') 91 print(η) 92 print('dp:') 93 print(dp) 94 print('dεd:') 95 print(dεd) 96 print('dεv:') 97 print(dεv) 98 # 绘图 99 plt.figure(1) # 创建图表1 100 ax1 = plt.subplot(111) 101 # plt.plot(p, q, 'b*') 102 plt.xlabel('p(kPa)') 103 plt.ylabel('q(kPa)') 104 plt.title(U'应力应变关系') 105 # plt.plot(p,q) 106 plt.plot(εd, η, 'r*') 107 plt.plot(εd, εv, 'b*') 108 plt.show()
用的python3.4+pycharm编译器,这个编译器可以按列选择,上面的代码可以输出数组,按列选择可以方便的放入excel中,之后处理。
下面是输出的数据在excel中:
1 围压不变 p不变 不排水 2 p q εd q/p εv p q εd q/p εv p q εd q/p εv 3 196 0 0 0 0 196 0 0 0 0 196 0 0 0 0 4 219.8033735 71.41012048 0.00294458 0.32488182 0.00616627 196 121.2569558 0.005 0.61865794 0 196 72.75417349 0.003 0.37119476 0 5 247.0206226 153.0618677 0.00939637 0.61963194 0.01681089 196 179.0710227 0.01284281 0.91362767 0.00647158 176.1387111 133.5818822 0.006 0.75839026 0 6 274.2116436 234.6349307 0.02061517 0.85567092 0.0281545 196 223.903844 0.02578835 1.14236655 0.01263495 153.9005543 162.3173732 0.009 1.05468998 0 7 300.7422139 314.2266416 0.03716315 1.04483716 0.03851054 196 252.3282794 0.04440249 1.28738918 0.01679252 141.7669587 171.3747924 0.012 1.20884862 0 8 319.5248863 370.5746587 0.05496147 1.15976775 0.04511559 196 261.9590164 0.0639265 1.33652559 0.0182205 136.0278412 174.5184164 0.015 1.28296101 0 9 332.7304557 410.191367 0.07353339 1.23280379 0.04939982 196 265.1033676 0.08377088 1.3525682 0.01868736 133.2091415 175.827666 0.018 1.31993694 0 10 341.7615351 437.2846054 0.0926109 1.27950211 0.0521673 196 266.1025194 0.10372143 1.35766592 0.01883572 131.7746429 176.4377929 0.021 1.33893585 0 11 347.7755554 455.3266661 0.11201989 1.30925437 0.05394033 196 266.416703 0.12370587 1.35926889 0.01888238 131.0292971 176.7402229 0.024 1.34886035 0 12 351.6977353 467.0932058 0.13164416 1.32810979 0.05506753 196 266.5151532 0.143701 1.35977119 0.018897 130.6376305 176.8951974 0.027 1.35409068 0 13 354.217724 474.6531719 0.1514067 1.34000401 0.0557799 196 266.5459683 0.16369947 1.35992841 0.01890158 130.4305684 176.976036 0.03 1.35686012 0 14 355.8204297 479.4612891 0.17125726 1.34748106 0.05622822 196 266.5556101 0.183699 1.3599776 0.01890301 130.3207472 177.0186055 0.033 1.35833019 0 15 356.8329394 482.4988181 0.19116348 1.35217006 0.05650956 196 266.5586267 0.20369885 1.35999299 0.01890346 130.2624003 177.0411363 0.036 1.35911158 0 16 357.4698304 484.4094911 0.21110474 1.35510594 0.05668578 196 266.5595704 0.2236988 1.35999781 0.0189036 130.2313729 177.0530933 0.039 1.3595272 0 17 357.8693447 485.608034 0.23106799 1.35694225 0.05679603 196 266.5598656 0.24369879 1.35999931 0.01890364 130.2148652 177.059448 0.042 1.35974835 0 18 358.119518 486.3585541 0.25104501 1.35809005 0.05686496 196 266.559958 0.26369878 1.35999979 0.01890365 130.2060802 177.0628279 0.045 1.35986605 0 19 358.2760029 486.8280086 0.27103066 1.35880719 0.05690803 196 266.5599869 0.28369878 1.35999993 0.01890366 130.2014044 177.0646263 0.048 1.3599287 0 20 358.3738175 487.1214525 0.29102169 1.35925514 0.05693493 196 266.5599959 0.30369878 1.35999998 0.01890366 130.1989156 177.0655834 0.051 1.35996204 0