zoukankan      html  css  js  c++  java
  • 修正剑桥模型预测-用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

      

  • 相关阅读:
    Java中接口对象实现回调
    推荐算法之计算相似度
    mahout入门实例2-Mahout单机开发环境介绍(参考粉丝日志)
    mahout入门实例-基于 Apache Mahout 构建社会化推荐引擎-实战(参考IBM)
    windows下gvim使用及常见命令
    一道C语言的问题(转)
    android开发手记一
    数据结构之有关图的算法(图的邻接表示法)
    Week of Code:GG
    HDU 5587:Array
  • 原文地址:https://www.cnblogs.com/zhubinglong/p/7280893.html
Copyright © 2011-2022 走看看