modules.shallowFoundation 模块帮助

本章节包含 modules.shallowFoundation 包中浅基础相关计算模块的使用说明和示例,例如:

  • 创建矩形浅基础(CreateRecFoundation)

  • 按 GB 50007-2011 分层总和法计算矩形基础沉降(FoundationSettlement)

  • 按 GB 50007-2011 基础宽度与埋深修正地基承载力(BearingCapacityModify)

  • 评价基础底面以下地基均匀性(SoilUniformity)

  • 依据 JGJ 340-2015 标贯修正击数计算地基承载力特征值 fak``(``BearingCapacityBySPT)

  • 依据 GB 50007-2011 抗剪强度指标计算地基承载力 fa``(``BearingCapacityByStrength)

CreateRecFoundation

模块简介与适用场景

  • CreateRecFoundation 按平面尺寸、标高和荷载生成一个矩形浅基础 RecFoundation,供 FoundationSettlement、BearingCapacityModify、SoilUniformity 使用。

  • 模块只有输出端口。name 为空时不生成基础,OutputFoundation 为 None。

  • 荷载可以用设计荷载(kN)或基础底面应力(kPa)输入,二者按底面积换算。换算关系见参数说明。

  • 典型场景:在 pipeline 里先建基础,再把 OutputFoundation 接到沉降或承载力模块的 InputFoundation。

端口说明

  • 输出端口

    • OutputFoundation:矩形浅基础(RecFoundation)。name 为 None 时为 None。

execute() 的返回值与 OutputFoundation 一致。

基础对象上可直接读取 name、width、length、design_ground_elev、bottom_elev、ave_unit_weight、design_load。bottom_depth 为设计地面至基础底面的埋深(m),bottom_stress 为基础底面应力(kPa)。

参数说明

CreateRecFoundation 参数一览

参数名

类型

默认值

说明

name

str | None

None

基础名称。为 None 时模块不运行,输出为 None。

width

float

8.0

基础宽度 b(m),须大于 0。

length

float

20.0

基础长度 l(m),须大于 0。

design_ground_elev

float

0.0

设计地面标高(m)。

bottom_elev

float

-2.0

基础底面标高(m)。埋深 = 设计地面标高 − 基础底面标高。

ave_unit_weight

float

20

基础及上覆回填土的平均重度(kN/m³)。界面中限定在 5–50。

load_by

"design_load" | "bottom_stress"

"design_load"

荷载输入方式。design_load 使用设计荷载;bottom_stress 使用基础底面应力,并把设计荷载写成「应力 × 宽度 × 长度」。

design_load

float

2100

设计荷载(kN)。load_by 为 design_load 时采用该值;底面应力 = 设计荷载 / (宽度 × 长度)。

bottom_stress

float

15.0

基础底面应力(kPa)。仅当 load_by 为 bottom_stress 时写入基础。

快速上手示例

from gdisdk.modules.shallowFoundation import CreateRecFoundation

mod = CreateRecFoundation(mname="CreateRecFoundation")
mod.name = "F1"
mod.width = 8.0
mod.length = 20.0
mod.design_ground_elev = 10.0
mod.bottom_elev = 8.0
mod.ave_unit_weight = 20.0
mod.load_by = "bottom_stress"
mod.bottom_stress = 150.0

mod.execute()
foundation = mod.OutputFoundation.data
# foundation.bottom_depth == 2.0
# foundation.design_load == 150 * 8 * 20

在 pipeline 中的使用方式

from gdisdk.pipeline import PipeLine
from gdisdk.modules.shallowFoundation import CreateRecFoundation, FoundationSettlement

pipe = PipeLine(app_name="ShallowFoundationDemo", app_title="浅基础沉降")

foundation = CreateRecFoundation(mname="CreateRecFoundation")
foundation.name = "F1"
foundation.width = 8.0
foundation.length = 20.0
calc = FoundationSettlement(mname="FoundationSettlement")

# links = foundation.OutputFoundation >> calc.InputFoundation
# pipe.add_links(links)
# pipe.add_module(foundation)
# pipe.add_module(calc)
# pipe.run()

FoundationSettlement

模块简介与适用场景

  • FoundationSettlement 对每条钻孔,按 GB 50007-2011《建筑地基基础设计规范》 分层总和法计算矩形基础中心点沉降,并用表 5.3.5 的沉降经验系数修正。

  • 输入为钻孔 MultiProfile1D、岩土 MaterialTable 和 RecFoundation。任一为空时 OutputResult 为 None。

  • 变形计算深度按基础宽度取 Δz,并按 Δs′n ≤ 0.025 s′n 确定。孔深不够时仍输出孔深范围内的沉降,同时按持力层末层向下延伸给出推测沉降。

  • 达到变形计算深度之前遇到压缩模量为空的土层,或计算基底以上平均重度时遇到重度为空的土层,该孔发出 GDIWarning 并退出计算。全部钻孔都无法计算时抛出 RuntimeError。

  • 基础底面所在层的 soil_bearing_capacity_fak 为空时抛出 ValueError。附加应力 p0 < 0 时仍写入实际 p0,沉降记为 0,并发出 GDIWarning。p0 = 0 时同样按无沉降写入,不再另发警告。

  • 典型场景:钻孔表、地层表已转为 MultiProfile1D,岩土参数建议值已转为 MaterialTable,再与 CreateRecFoundation 串联,得到各孔沉降表。

计算会改写输入:材料表中若没有 material_id = -1,会追加一行「填土」;设置了设计水位时,各孔地下水埋深会被覆盖。

端口说明

  • 输入端口

    • InputProfiles:钻孔(MultiProfile1D)。也可通过参数 profiles 传入。

    • InputMaterialTable:岩土参数(MaterialTable)。也可通过参数 material_table 传入。

    • InputFoundation:矩形基础(RecFoundation)。也可通过参数 foundation 传入。

  • 输出端口

    • OutputResult:沉降结果表(TableData,name 为 f_settle,标题「基础沉降计算结果」)。任一输入为 None 时为 None。

execute() 的返回值与 OutputResult 一致。

输入字段要求

材料表需能按 material_id 取到各层参数。沉降计算实际使用:

  • compression_modulus:压缩模量(MPa)。变形计算深度以内缺失时,该孔不参与计算。

  • soil_bearing_capacity_fak:基础底面所在层的地基承载力特征值(kPa),用于沉降经验系数。

  • unit_weight:天然重度(kN/m³),用于基底以上土的加权平均重度。该段土层缺失重度时,该孔不参与计算。

钻孔使用孔口标高、层底深度、地层对应的 materials_id,以及地下水埋深 gwt_depth。

输出字段说明(OutputResult)

  • profile_number:钻孔编号

  • cal_settle_depth:变形计算深度(m),自基础底面起算

  • bore_depth:钻孔深度(m),自孔口起算

  • is_depth_enough:钻孔深度是否满足变形计算深度,取 满足 或 不满足。p0 ≤ 0 时为 无沉降,变形计算深度和沉降经验系数为空

  • addition_stress:基底附加应力 p0(kPa)

  • settlement:孔深范围内的基础沉降(mm)

  • empirical_psi:对应的沉降经验系数 ψs

  • modified_settlement:ψs × ``settlement``(mm)

  • infer_settlement:推测基础沉降(mm)。孔深满足时与 settlement 相同;不满足时假定末层继续向下直至满足深度要求

  • infer_empirical_psi:推测沉降经验系数

  • infer_modified_settlement:推测修正基础沉降(mm)

计算规则说明

附加应力 p0 由基础底面应力与基底以上土重的差值得到。底面应力来自基础的设计荷载除以底面积。

  • cal_p0_from = "design_ground":在设计地面与基础底面之间,按天然重度做厚度加权得到 γm。孔口低于设计地面时,空隙用填土补齐。p0 = 底面应力 + (基础及回填土平均重度 − γm) × 基础埋深。

  • cal_p0_from = "original_ground":孔口高于基础底面时,取孔口至基础底面的土层,按天然重度厚度加权得到 γm,h 为该段厚度,d 为基础埋深。p0 = 底面应力 + 基础及回填土平均重度 × d − γm × h。地下水位高于孔口时,再减去水的重度 × (水位 − 孔口标高)。该方式要求钻孔孔口高于基础底面。

  • γm 使用天然重度。参与加权的土层重度为空时,该孔发出 GDIWarning 并不参与后续沉降计算。design_water_elev 会把各孔地下水埋深改写为「孔口标高 − 设计水位」;不设置则保留钻孔原有水位。该水位只参与「水位高于孔口」时的水重修正。

  • p0 < 0 表示基础底面相对原土是卸荷。结果表保留该 p0,沉降、修正沉降和推测沉降记为 0,并给出 GDIWarning,警告中的 p0 保留两位小数。p0 = 0 时同样记为无沉降,不发该警告。

变形计算深度的 Δz 由基础宽度 b 决定:

变形计算深度分层厚度 Δz

基础宽度 b(m)

Δz(m)

b ≤ 2

0.3

2 < b ≤ 4

0.6

4 < b ≤ 8

0.8

b > 8

1.0

自基础底面向下累计沉降,直至计算厚度 Δz 范围内的压缩量不大于总沉降的 2.5%。压缩模量优先使用 compression_modulus_by_profile 中该孔、基础底面以下各层的值;未提供时使用材料表的 compression_modulus。列表长度须等于该孔原始分层数,位于基础底面以上的层会从列表前部去掉。

沉降经验系数按 GB 50007-2011 表 5.3.5,由计算深度内的压缩模量当量值和 p0 与持力层 fak 的相对大小插值。p0 ≥ fak 或 p0 ≤ 0.75 fak 时取表的对应端点。

参数说明

FoundationSettlement 参数一览

参数名

类型

默认值

说明

profiles

MultiProfile1D | None

None

输入钻孔;赋值后写入 InputProfiles。

material_table

MaterialTable | None

None

输入材料表;赋值后写入 InputMaterialTable。

foundation

RecFoundation | None

None

输入基础;赋值后写入 InputFoundation。

cal_p0_from

"design_ground" | "original_ground"

"original_ground"

基底以上土体自重的起算面。design_ground 从设计地面起算,original_ground 从钻孔孔口(天然地面)起算。

fill_compression_modulus

float

2

填土压缩模量(MPa)。

fill_characteristic_bearing_capacity

float

80

填土地基承载力特征值(kPa)。基础底面落在填土中时,用作该层 fak。

fill_unit_weight

float

18

填土重度(kN/m³)。界面中仅在 cal_p0_from 为 design_ground 时显示。

compression_modulus_by_profile

dict[str, list[float]] | None

None

按钻孔编号给出各层压缩模量(MPa)。为 None 时用材料表。某孔提供了列表时,该孔不再使用材料表中的压缩模量。

design_water_elev

float | None

None

设计水位高程(m)。为 None 时保留钻孔中的地下水位。

water_unit_weight

float

10

水的重度(kN/m³)。水位高于孔口时参与附加应力修正。

快速上手示例

import pandas as pd

from gdisdk.dataclass.geoProfiles import MaterialTable, MultiProfile1D
from gdisdk.dataclass.terminologies import GeoMaterialProps as GProps
from gdisdk.modules.shallowFoundation import CreateRecFoundation, FoundationSettlement

materials = MaterialTable(
    {
        GProps.MaterialID: [0, 1],
        GProps.LayerNumber: ["1", "2"],
        GProps.MaterialName: ["粉质黏土", "黏土"],
        GProps.CompressionModulus: [6.0, 8.0],
        GProps.UnitWeight: [18.5, 19.0],
        GProps.SaturateUnitWeight: [19.5, 20.0],
        GProps.SoilCharacteristicBearingCapacity: [160.0, 180.0],
    }
)
profiles = MultiProfile1D(
    profiles_table=pd.DataFrame(
        {
            "pnum": ["ZK1", "ZK2"],
            "top": [10.0, 10.0],
            "x_coord": [0.0, 10.0],
            "y_coord": [0.0, 0.0],
            "gwt_depth": [3.0, 3.5],
        }
    ),
    layers_table=pd.DataFrame(
        {
            "pnum": ["ZK1", "ZK1", "ZK2", "ZK2"],
            "layers_depth": [4.0, 12.0, 5.0, 14.0],
            "materials_id": [0, 1, 0, 1],
        }
    ),
)

foundation_mod = CreateRecFoundation(mname="CreateRecFoundation")
foundation_mod.name = "F1"
foundation_mod.design_ground_elev = 10.0
foundation_mod.bottom_elev = 8.0
foundation_mod.load_by = "bottom_stress"
foundation_mod.bottom_stress = 150.0
foundation_mod.execute()

calc = FoundationSettlement(mname="FoundationSettlement")
calc.cal_p0_from = "original_ground"
calc.InputProfiles = profiles
calc.InputMaterialTable = materials
calc.InputFoundation = foundation_mod.OutputFoundation.data
calc.execute()

result = calc.OutputResult.data

在 pipeline 中的使用方式

from gdisdk.pipeline import PipeLine
from gdisdk.modules.converters import ConvertToMaterialTable, ConvertToMultiProfile1D
from gdisdk.modules.shallowFoundation import CreateRecFoundation, FoundationSettlement

pipe = PipeLine(app_name="FoundationSettlementDemo", app_title="浅基础沉降")

to_material = ConvertToMaterialTable(mname="ToMaterial")
to_profiles = ConvertToMultiProfile1D(mname="ToProfiles")
foundation = CreateRecFoundation(mname="CreateRecFoundation")
foundation.name = "F1"
calc = FoundationSettlement(mname="FoundationSettlement")
calc.cal_p0_from = "original_ground"

# links = to_profiles.OutputMultiProfile1D >> calc.InputProfiles
# links = to_material.OutputMaterialTable >> calc.InputMaterialTable
# links = foundation.OutputFoundation >> calc.InputFoundation
# pipe.add_module(to_material)
# pipe.add_module(to_profiles)
# pipe.add_module(foundation)
# pipe.add_module(calc)
# pipe.run()
# result = calc.OutputResult.data

BearingCapacityModify

模块简介与适用场景

  • BearingCapacityModify 按 GB 50007-2011《建筑地基基础设计规范》第 5.2.4 条,用基础宽度和埋深把持力层承载力特征值 fak 修正为 fa,并判断 fa 是否不小于基础底面应力。

  • 每个钻孔使用基础底面所在土层。土类编号决定宽度、深度修正系数 ηb、ηd;未指定土类的钻孔会跳过并给出警告。f_soil_types 整体为空时,各孔按土类 0(淤泥和淤泥质土)计算。

  • 湿陷性黄土(土类编号 12–17)的深度项为 (d − 1.5),其余土类为 (d − 0.5)。基础宽度小于 3 m 时按 3 m、大于 6 m 时按 6 m 代入宽度项。

  • 持力层材料行含 deep_plate_loading_test 且其值为真时,深度修正系数 ηd 取 0。

  • 典型场景:已有各孔剖面、岩土 fak 与重度,以及矩形基础,需要按持力层土类做承载力深宽修正,并给出基础是否满足。

计算会改写输入。未设置 design_water_elev 时,各孔地下水埋深被清空,按无地下水、天然重度计算;设置后按该水位覆盖各孔水位,水位以下用有效重度(饱和重度 − 水的重度)。材料表中若没有 material_id = -1,会追加填土的承载力与重度。

端口说明

  • 输入端口

    • InputProfiles:钻孔(MultiProfile1D)。也可通过参数 profiles 传入。

    • InputMaterialTable:岩土参数(MaterialTable)。也可通过参数 materials 传入。

    • InputFoundation:矩形基础(RecFoundation)。也可通过参数 foundation 传入。

  • 输出端口

    • OutputResult:表集合(TableCollection)。任一输入为 None 时为 None。主表 result_by_foundation``(标题「地基承载力是否满足」)按 ``foundation_name 关联子表 ``result_by_profile``(标题「修正地基承载力特征值计算结果」)。

execute() 的返回值与 OutputResult 一致。可用 output["result_by_foundation"] 与 output["result_by_profile"] 取表。

输入字段要求

持力层(基础底面以下第一层)材料行需要:

  • soil_bearing_capacity_fak:地基承载力特征值(kPa)

  • unit_weight:天然重度(kN/m³)

  • saturated_unit_weight:饱和重度(kN/m³)。持力层处于地下水位以下时使用

  • layer_number、material_name:写入「基础持力层」列;有岩土名称时形式为 层号 名称

可选列 deep_plate_loading_test:为真时不做深度修正。

基底以上土层需要 unit_weight;水位以下还需要 saturated_unit_weight。

输出字段说明

主表 result_by_foundation:

  • foundation_name:基础名称

  • foundation_width:基础宽度(m)

  • bottom_stress:基础底面应力(kPa)。字段标题为「设计荷载」

  • satisfied:是否满足。任一参与计算的钻孔 fa 小于底面应力时为 不满足,否则为 满足

子表 result_by_profile:

  • foundation_name:基础名称

  • profile_number:钻孔编号

  • layer_number:基础持力层

  • soil_bearing_capacity_fak:持力层承载力特征值(kPa)

  • unit_weight_below_foundation:基底以下土重度 γ(kN/m³)

  • unit_weight_above_foundation:基底以上土的加权平均重度 γm(kN/m³)

  • soil_bearing_capacity_factor_eta_b:宽度修正系数 ηb

  • soil_bearing_capacity_factor_eta_d:深度修正系数 ηd

  • foundation_bottom_depth:代入公式的基础埋深 d(m)

  • soil_bearing_capacity_fa:修正后地基承载力特征值 fa(kPa)

计算规则说明

fa = fak + ηb · γ · (b′ − 3) + ηd · γm · (d − d0)

b′ 为基础宽度,并限制在 3–6 m。一般土 d0 = 0.5 m;土类 12–17(湿陷性黄土)d0 = 1.5 m。

γ 为持力层重度:地下水位高于持力层层底时取有效重度,否则取天然重度。γm 为基底以上土的厚度加权平均重度,水位以下同样取有效重度。

埋深 d 由 cal_d_from 决定:

  • design_ground:d 为设计地面至基础底面的埋深。γm 取设计地面与基础底面之间的土层;孔口低于设计地面时用填土补齐。

  • original_ground:d 为孔口至基础底面的深度;孔口不高于基础底面时 d = 0、γm = 0。γm 取孔口与基础底面之间的土层。

  • user_defined:γm 与 design_ground 相同,公式中的 d 改用 equivalent_f_depth。两侧裙楼宽度都大于两倍主楼宽度时,可分别折算等效埋深后取不利值填入。

基础底面与钻孔不相交,或钻孔底高于基础底面时,抛出 RuntimeError。

土类编号与修正系数(与界面「基础底面所在土的类别」一致):

基底土类别与 ηb、ηd

编号

土的类别

ηb

ηd

0

淤泥和淤泥质土

0

1

1

人工填土,e或t大于等于0.85的黏性土

0

1

2

红黏土,含水比 aw > 0.8

0

1.2

3

红黏土,含水比 aw ≤ 0.8

0.15

1.4

4

大面积压实填土,压实系数大于0.95,黏粒含量pc ≥ 10%的黏性土

0

1.5

5

最大干密度大于2100kg/m³的级配砂石

0

2

6

粉土,黏粒含量 pc ≥ 10%的粉性土

0.3

1.5

7

粉土,黏粒含量 pc < 10%的粉性土

0.5

2

8

e及t均小于0.85的黏性土

0.3

1.6

9

粉砂、细砂(不包括饱湿与饱和时的高密实状态)

2

3

10

中砂、粗砂、砾砂和碎石土

3

4.4

11

非弱风化和全风化岩石

1

1

12

晚更新世、全新世湿陷性黄土,ω≤24%

0.2

1.25

13

晚更新世、全新世湿陷性黄土,ω>24%

0

1.1

14

新进堆积黄土

0

1

15

饱和黄土,e及IL都小于0.85

0.2

1.25

16

饱和黄土,e或IL大于等于0.85

0

1.1

17

饱和黄土,e及IL都不小于1.00

0

1

参数说明

BearingCapacityModify 参数一览

参数名

类型

默认值

说明

profiles

MultiProfile1D | None

None

输入钻孔;赋值后写入 InputProfiles。

materials

MaterialTable | None

None

输入材料表;赋值后写入 InputMaterialTable。

foundation

RecFoundation | None

None

输入基础;赋值后写入 InputFoundation。

cal_d_from

"original_ground" | "design_ground" | "user_defined"

"design_ground"

基础埋深的取法。见上文计算规则。

equivalent_f_depth

float | None

None

等效基础埋深(m)。仅 cal_d_from="user_defined" 时使用,且必须给出。

f_soil_types

dict[str, int] | None

None

各钻孔持力层土类编号。键为钻孔编号,值为上表编号。为 None 或空字典时,各孔按 0 计算。字典中缺少的钻孔会被跳过。

design_water_elev

float | None

None

设计水位高程(m)。为 None 时按无地下水计算。

water_unit_weight

float

10

水的重度(kN/m³)。有效重度 = 饱和重度 − 该值。

fill_character_bearing_capacity

float

100

填土地基承载力特征值(kPa)。

fill_unit_weight

float

18

填土重度(kN/m³)。

快速上手示例

import pandas as pd

from gdisdk.dataclass.geoProfiles import MaterialTable, MultiProfile1D
from gdisdk.dataclass.terminologies import GeoMaterialProps as GProps
from gdisdk.modules.shallowFoundation import BearingCapacityModify, CreateRecFoundation

materials = MaterialTable(
    {
        GProps.MaterialID: [0, 1],
        GProps.LayerNumber: ["1", "2"],
        GProps.MaterialName: ["粉质黏土", "黏土"],
        GProps.UnitWeight: [18.5, 19.0],
        GProps.SaturateUnitWeight: [19.5, 20.0],
        GProps.SoilCharacteristicBearingCapacity: [160.0, 180.0],
    }
)
profiles = MultiProfile1D(
    profiles_table=pd.DataFrame(
        {
            "pnum": ["ZK1", "ZK2"],
            "top": [10.0, 10.0],
            "x_coord": [0.0, 10.0],
            "y_coord": [0.0, 0.0],
            "gwt_depth": [3.0, 3.5],
        }
    ),
    layers_table=pd.DataFrame(
        {
            "pnum": ["ZK1", "ZK1", "ZK2", "ZK2"],
            "layers_depth": [4.0, 12.0, 5.0, 14.0],
            "materials_id": [0, 1, 0, 1],
        }
    ),
)

foundation_mod = CreateRecFoundation(mname="CreateRecFoundation")
foundation_mod.name = "F1"
foundation_mod.design_ground_elev = 10.0
foundation_mod.bottom_elev = 8.0
foundation_mod.load_by = "bottom_stress"
foundation_mod.bottom_stress = 150.0
foundation_mod.execute()

calc = BearingCapacityModify(mname="BearingCapacityModify")
calc.cal_d_from = "design_ground"
calc.f_soil_types = {"ZK1": 8, "ZK2": 8}
calc.design_water_elev = 7.0
calc.InputProfiles = profiles
calc.InputMaterialTable = materials
calc.InputFoundation = foundation_mod.OutputFoundation.data
calc.execute()

output = calc.OutputResult.data
by_foundation = output["result_by_foundation"]
by_profile = output["result_by_profile"]

在 pipeline 中的使用方式

from gdisdk.pipeline import PipeLine
from gdisdk.modules.shallowFoundation import BearingCapacityModify, CreateRecFoundation

pipe = PipeLine(app_name="BearingCapacityModifyDemo", app_title="地基承载力修正")

foundation = CreateRecFoundation(mname="CreateRecFoundation")
foundation.name = "F1"
calc = BearingCapacityModify(mname="BearingCapacityModify")
calc.cal_d_from = "design_ground"
calc.f_soil_types = {"ZK1": 8, "ZK2": 8}

# links = foundation.OutputFoundation >> calc.InputFoundation
# pipe.add_module(foundation)
# pipe.add_module(calc)
# pipe.run()
# output = calc.OutputResult.data

SoilUniformity

模块简介与适用场景

  • SoilUniformity 把各钻孔在基础底面至同一变形区底面之间的土层,按分层总和法的附加应力系数积分成压缩模量当量值,再用各孔当量值评价地基是否均匀。

  • 输入为 MultiProfile1D、MaterialTable 和 RecFoundation。任一为空时 OutputResult 为 None。

  • 变形区底面默认取各孔孔底标高的最大值(最浅的孔底),使每个钻孔都能覆盖这段深度。设置 cal_elevation 时,取该值与上述孔底标高中的较大者,因此不会算到任一钻孔尚未揭露的深度;填得更高则变形区更浅。

  • 变形区内压缩模量为空的钻孔会发出 GDIWarning 并排除。有效钻孔少于 2 个时抛出 RuntimeError。基础底面低于某孔孔底时抛出 RuntimeError。

  • 典型场景:同一矩形基础下有多条钻孔,需要用压缩模量当量值判断地基均匀性。

材料表中若没有 material_id = -1,会追加填土及其压缩模量,供基础底面高于孔口时的填土段使用。

端口说明

  • 输入端口

    • InputProfiles:钻孔(MultiProfile1D)。也可通过参数 profiles 传入。

    • InputMaterialTable:岩土参数(MaterialTable)。也可通过参数 materials 传入。

    • InputFoundation:矩形基础(RecFoundation)。也可通过参数 foundation 传入。

  • 输出端口

    • OutputResult:评价结果(ResultModel,模型名 SoilUniformityResult,标题「地基均匀性评价」)。任一输入为 None 时为 None。

execute() 的返回值与 OutputResult 一致。字段可按属性读取,例如 result.conclusion。

输入字段要求

变形区内每一层都需要材料表中的 ``compression_modulus``(MPa)。缺失的钻孔不参与评价。

输出字段说明(OutputResult)

  • calculation_depth:计算深度(m),为基础底面标高减去变形区底面标高

  • mean_es:各有效钻孔压缩模量当量值的算术平均(MPa)

  • real_non_uniformity_factor:实际不均匀系数 C_U = Es,max / Es,min

  • standard_non_uniformity_factor:由 mean_es 插值得到的标准不均匀系数 C_Uk

  • conclusion:均匀,满足要求 或 不均匀,不满足要求

计算规则说明

各孔先切到基础底面,再切到同一变形区底面。某层的附加应力系数沿厚度的积分记为 A_i,该孔压缩模量当量值为 ΣA_i / Σ(A_i / Es_i)。这与沉降计算中的当量模量相同,不是厚度加权平均。

C_U 大于 C_Uk 时结论为「不均匀,不满足要求」;二者相等时为「均匀,满足要求」。C_Uk 由 mean_es 分段线性插值:

标准不均匀系数

当量压缩模量平均值 Es(MPa)

C_Uk

Es ≤ 4

1.3

4 < Es ≤ 7.5

1.3 至 1.5 线性插值

7.5 < Es ≤ 15

1.5 至 1.8 线性插值

15 < Es ≤ 20

1.8 至 2.5 线性插值

Es > 20

2.5

参数说明

SoilUniformity 参数一览

参数名

类型

默认值

说明

profiles

MultiProfile1D | None

None

输入钻孔;赋值后写入 InputProfiles。

materials

MaterialTable | None

None

输入材料表;赋值后写入 InputMaterialTable。

foundation

RecFoundation | None

None

输入基础;赋值后写入 InputFoundation。

cal_elevation

float | None

None

变形区底部标高(m)。为 None 时取各孔孔底标高的最大值;给出时取该值与孔底标高最大值中的较大者。

fill_Es

float

2.0

填土压缩模量(MPa),须大于 0。

快速上手示例

import pandas as pd

from gdisdk.dataclass.geoProfiles import MaterialTable, MultiProfile1D
from gdisdk.dataclass.terminologies import GeoMaterialProps as GProps
from gdisdk.modules.shallowFoundation import CreateRecFoundation, SoilUniformity

materials = MaterialTable(
    {
        GProps.MaterialID: [0, 1],
        GProps.LayerNumber: ["1", "2"],
        GProps.MaterialName: ["粉质黏土", "黏土"],
        GProps.CompressionModulus: [6.0, 8.0],
    }
)
profiles = MultiProfile1D(
    profiles_table=pd.DataFrame(
        {
            "pnum": ["ZK1", "ZK2"],
            "top": [10.0, 10.0],
            "x_coord": [0.0, 10.0],
            "y_coord": [0.0, 0.0],
            "gwt_depth": [3.0, 3.5],
        }
    ),
    layers_table=pd.DataFrame(
        {
            "pnum": ["ZK1", "ZK1", "ZK2", "ZK2"],
            "layers_depth": [4.0, 12.0, 5.0, 14.0],
            "materials_id": [0, 1, 0, 1],
        }
    ),
)

foundation_mod = CreateRecFoundation(mname="CreateRecFoundation")
foundation_mod.name = "F1"
foundation_mod.design_ground_elev = 10.0
foundation_mod.bottom_elev = 8.0
foundation_mod.execute()

calc = SoilUniformity(mname="SoilUniformity")
calc.InputProfiles = profiles
calc.InputMaterialTable = materials
calc.InputFoundation = foundation_mod.OutputFoundation.data
calc.execute()

result = calc.OutputResult.data
# result.conclusion、result.real_non_uniformity_factor、result.mean_es

在 pipeline 中的使用方式

from gdisdk.pipeline import PipeLine
from gdisdk.modules.shallowFoundation import CreateRecFoundation, SoilUniformity

pipe = PipeLine(app_name="SoilUniformityDemo", app_title="地基均匀性评价")

foundation = CreateRecFoundation(mname="CreateRecFoundation")
foundation.name = "F1"
calc = SoilUniformity(mname="SoilUniformity")

# links = foundation.OutputFoundation >> calc.InputFoundation
# pipe.add_module(foundation)
# pipe.add_module(calc)
# pipe.run()
# result = calc.OutputResult.data

BearingCapacityBySPT

模块简介与适用场景

  • BearingCapacityBySPT 对 MaterialTable 中每一行岩土,按 JGJ 340-2015《建筑地基检测技术规范》第 7.4.8 条 与标贯修正击数 modified_spt_number 计算 地基承载力特征值 ``fak``(kPa),并输出数值列与字符串列两种表示。

  • 岩土名称经内部分类映射后,支持 中砂和粗砂、粉砂和细砂、粉土、黏性土 四类查表;规范表格范围内对击数做线性插值,低于或高于表格端点时 fak_str 为 <… / >… 形式。

  • 典型场景:标准地层表已含岩土名称与标贯修正击数,需在 pipeline 中批量得到各层 fak 供报表或下游承载力分析;常与 ConvertToMaterialTable 串联。

端口说明

  • 输入端口

    • InputMaterials:材料表(MaterialTable)。也可通过参数 material_table 在构造时传入(等价写入 InputMaterials)。

  • 输出端口

    • OutputResults:结果表(TableData,name 为 bearing_capacity_by_spt_fak)。若 InputMaterials 为 None,则为 None。

execute() 的返回值与 OutputResults 一致。

输入字段要求

模块通过 RequiredColumnCheck 校验输入材料表至少包含:

  • GeoMaterialProps.MaterialName``(``material_name / 岩土名称)

  • GeoMaterialProps.ModifiedSPTNumber``(``modified_spt_number / 标贯修正击数)

可选列 GeoMaterialProps.LayerNumber``(地层编号)会原样带入输出;``material_id 来自材料表索引。

输出字段说明(OutputResults)

  • material_id:岩性 ID

  • layer_number:地层编号

  • material_name:岩土名称

  • soil_bearing_capacity_fak:地基承载力特征值(数值,kPa);无法计算或超出表格以字符串表示时该列为 None

  • fak_str:地基承载力特征值字符串(kPa 单位元数据);无法计算时为 None,表格外为 <下限 / >上限 等

计算规则说明

  • 岩土名称无法映射到承载力查表分类时,该行 fak 与 fak_str 均为空。

  • modified_spt_number 为空时,同样为空。

  • 击数在规范表格 闭区间 内:线性插值得到浮点 fak;str_precision 为 None 时 fak_str 为 str(fak),否则按指定小数位格式化。

  • 击数 低于 表格最小击数:fak_str 形如 <80``(以下限承载力为界);**高于** 最大击数:``fak_str 形如 >220。这两种情况数值列 soil_bearing_capacity_fak 为 None。

参数说明

BearingCapacityBySPT 参数一览

参数名

类型

默认值

说明

material_table

MaterialTable | None

None

输入材料表;赋值后写入 InputMaterials。也可直接设置 InputMaterials 端口。

str_precision

int | None

None

fak_str 的小数位数(0–100)。为 None 时不强制固定小数格式。

快速上手示例:材料表计算 fak

from gdisdk.dataclass.geoProfiles import MaterialTable
from gdisdk.dataclass.terminologies import GeoMaterialProps as GProps
from gdisdk.modules.shallowFoundation import BearingCapacityBySPT

materials = MaterialTable(
    {
        GProps.MaterialID: [0, 1, 2],
        GProps.LayerNumber: ["1", "2", "3"],
        GProps.MaterialName: ["砂土", "黏性土", "粉土"],
        GProps.ModifiedSPTNumber: [6, 8.9, 24],
    }
)

mod = BearingCapacityBySPT(mname="BearingCapacityBySPT")
mod.str_precision = 0
mod.InputMaterials = materials
mod.execute()

result = mod.OutputResults.data
# result 含 material_id、layer_number、material_name、
# soil_bearing_capacity_fak、fak_str

快速上手示例:接 ConvertToMaterialTable

from gdisdk.dataclass.terminologies import GeoMaterialProps as GProps
from gdisdk.modules.converters import ConvertToMaterialTable
from gdisdk.modules.shallowFoundation import BearingCapacityBySPT

conv = ConvertToMaterialTable(mname="ConvertMaterial")
conv.column_name_map = {
    "地层编号": GProps.LayerNumber,
    "岩土名称": GProps.MaterialName,
    "标贯修正击数": GProps.ModifiedSPTNumber,
}
# conv.InputTable = standard_layer_table
conv.execute()
materials = conv.OutputMaterialTable.data

mod = BearingCapacityBySPT(mname="BearingCapacityBySPT")
mod.InputMaterials = materials
mod.execute()
fak_table = mod.OutputResults.data

在 pipeline 中的使用方式

from gdisdk.pipeline import PipeLine
from gdisdk.modules.converters import ConvertToMaterialTable
from gdisdk.modules.shallowFoundation import BearingCapacityBySPT

pipe = PipeLine(app_name="FakBySPTDemo", app_title="标贯击数计算地基承载力特征值")

convert = ConvertToMaterialTable(mname="ConvertMaterial")
calc = BearingCapacityBySPT(mname="BearingCapacityBySPT")

# links = reader.OutputTable >> convert.InputTable
# links = convert.OutputMaterialTable >> calc.InputMaterials
# pipe.add_links(links)
# pipe.add_module(convert)
# pipe.add_module(calc)
# pipe.run()
# fak_table = calc.OutputResults.data

BearingCapacityByStrength

模块简介与适用场景

  • BearingCapacityByStrength 对 MaterialTable 中每一行岩土,按 GB 50007-2011《建筑地基基础设计规范》第 5.2.5 条,由 黏聚力、内摩擦角 与 重度**(及基础宽度)计算 **地基承载力 ``fa``(kPa),只输出数值结果。

  • 模块约定 基底埋深为 0**(不做深度与宽度修正项中的埋深部分;宽度通过参数 ``f_width`` 参与公式)。可选 **抗浮水位 anti_float_water_level:当层底平均高程低于该水位时,按 水下 工况采用饱和重度并扣除水的重度(water_unit_weight,默认 10 kN/m³)。

  • 典型场景:标准地层表已汇总各层土工指标(c、φ、天然/饱和重度、层底标高),需在 pipeline 中批量得到各层 fa;常与 ConvertToMaterialTable 串联。

端口说明

  • 输入端口

    • InputMaterials:材料表(MaterialTable)。也可通过参数 material_table 传入(等价写入 InputMaterials)。

  • 输出端口

    • OutputResults:结果表(TableData,name 为 bearing_capacity_by_strength_fa)。若 InputMaterials 为 None,则为 None。

execute() 的返回值与 OutputResults 一致。

输入字段要求

模块通过 RequiredColumnCheck 校验输入材料表至少包含:

  • GeoMaterialProps.UnitWeight``(``unit_weight / 重度,kN/m³)

  • GeoMaterialProps.SaturateUnitWeight``(``saturate_unit_weight / 饱和重度,kN/m³)

  • GeoMaterialProps.Cohesion``(``cohesion / 黏聚力,kPa)

  • GeoMaterialProps.InternalFrictionAngle``(``internal_friction_angle / 内摩擦角,°)

  • GeoMaterialProps.MeanLayerBottomElevation``(``mean_layer_bottom_elevation / 层底平均高程,m)

可选列 GeoMaterialProps.LayerNumber、GeoMaterialProps.MaterialName 会原样带入输出;material_id 来自材料表索引。

输出字段说明(OutputResults)

  • material_id:岩性 ID

  • layer_number:地层编号

  • material_name:岩土名称

  • soil_bearing_capacity_fa:修正后地基承载力特征值(数值,kPa);无法计算时为 None

计算规则说明

  • 由规范表对 Mb、Mc 按内摩擦角线性插值(内摩擦角低于表格下限时 Mb=0、Mc=π)。

  • **非水下**(未设抗浮水位,或层底平均高程 ≥ 抗浮水位):fa = Mb × unit_weight × f_width + Mc × cohesion。

  • **水下**(已设 anti_float_water_level 且层底平均高程 < 抗浮水位):fa = Mb × (saturate_unit_weight − water_unit_weight) × f_width + Mc × cohesion,且饱和重度不得为空。water_unit_weight 默认 10 kN/m³。

  • cohesion 或 internal_friction_angle 为空时无法计算;设了抗浮水位但 mean_layer_bottom_elevation 为空时无法计算;水下且 saturate_unit_weight 为空时无法计算;非水下且 unit_weight 为空时无法计算。

  • numeric_precision 控制数值结果的小数位数;为 None 时保留计算原值。

参数说明

BearingCapacityByStrength 参数一览

参数名

类型

默认值

说明

material_table

MaterialTable | None

None

输入材料表;赋值后写入 InputMaterials。也可直接设置 InputMaterials 端口。

f_width

float

0.3

基础宽度(m),参与 5.2.5 条公式。

anti_float_water_level

float | None

None

抗浮设计水位(m)。为 None 时不判断水下,一律按非水下重度计算。

water_unit_weight

float

10

水的重度(kN/m³)。水下工况的有效重度 = 饱和重度 − 该值。

numeric_precision

int | None

None

数值结果的小数位数(0–100)。为 None 时保留计算原值。

快速上手示例:材料表计算 fa

from gdisdk.dataclass.geoProfiles import MaterialTable
from gdisdk.dataclass.terminologies import GeoMaterialProps as GProps
from gdisdk.modules.shallowFoundation import BearingCapacityByStrength

materials = MaterialTable(
    {
        GProps.MaterialID: [0, 1, 2],
        GProps.LayerNumber: ["1", "2", "3"],
        GProps.MaterialName: ["砂土", "黏性土", "粉土"],
        GProps.UnitWeight: [17.0, 18.5, 19.0],
        GProps.SaturateUnitWeight: [19.0, 20.0, 20.0],
        GProps.Cohesion: [10.0, 15.0, 18.5],
        GProps.InternalFrictionAngle: [20.0, 31.0, 35.0],
        GProps.MeanLayerBottomElevation: [10.0, 11.0, 10.0],
    }
)

mod = BearingCapacityByStrength(mname="BearingCapacityByStrength")
mod.f_width = 0.3
mod.anti_float_water_level = 9.5
mod.numeric_precision = 1
mod.InputMaterials = materials
mod.execute()

result = mod.OutputResults.data

在 pipeline 中的使用方式

from gdisdk.pipeline import PipeLine
from gdisdk.modules.converters import ConvertToMaterialTable
from gdisdk.modules.shallowFoundation import BearingCapacityByStrength

pipe = PipeLine(app_name="FaByStrengthDemo", app_title="强度指标计算地基承载力")

convert = ConvertToMaterialTable(mname="ConvertMaterial")
calc = BearingCapacityByStrength(mname="BearingCapacityByStrength")
calc.f_width = 0.3

# links = reader.OutputTable >> convert.InputTable
# links = convert.OutputMaterialTable >> calc.InputMaterials
# pipe.add_module(convert)
# pipe.add_module(calc)
# pipe.run()
# fa_table = calc.OutputResults.data

更多信息