流固耦合-1

★★★渗流模式:

一、zone water density和zone initial fluid-density

①zone water density在无渗流模式(未设置model configure fluid)下使用;仅用于水位面设置命令(zone water plane)之前;

注:zone water plane origin (0,0,5) normal (0,0,1)

zone initial fluid-density在渗流模式(设置model configure fluid)下使用;设置流体的密度。

二、密度

①渗流模式下:只设置干密度,flac会自动计算每个单元的饱和重度;

②无渗流模式下:需要对水下单元设置饱和重度——唯一设置饱和重度的情况;

三、zone gridpoint fix (zone apply fix) pore-pressure 孔压值 range 节点范围→区别

zone gridpoint fix pore-pressure 孔压值,可以跟随一个固定的孔压值,表示所选范围内的所有节点拥有相同的孔压;也可以不给定孔压值,表示所选范围内节点保持原有的孔压值不变。

在设置特定的孔压边界时,可以配合initial pore-pressure使用,表示有效应力不变,总应力变化;

zone gridpoint initialize pore-pressure 30e3 gradient 0 0 -10e3 range position-x -0.1 0.1

②apply pp命令后可以使用gradient关键词来表示孔压变化梯度,或使用table和fish进行孔压值定义

四、其他渗透边界

①节点的流量渗流边界:zone gridpoint fix well 流量

②单元的渗流边界条件:zone apply well 流量

③平面的渗流边界条件:

Ⅰ通量边界条件:通过平面的流量在平面法向方向的分量zone face apply discharge 渗流通量

Ⅱ渗漏边界:zone face apply leakage V1 V2

五、选择流固求解方法

考虑三种因素:力学时标和扩散特征时间比值;施加扰动的属性(流体or力学扰动);流固刚度比

完全流固耦合分析:

Ⅰ孔压的改变引起体积应变的变化,进而影响应力;

Ⅱ应变的发生也会影响孔压的改变;

一般地,力学扰动都是瞬时的,而渗流往往需要更长的时间,比如土体中超孔隙水压力的消散与固结往往要发生数小时、数天的时间;





1.流固耦合板块教程介绍及核心问题

model new
; Create zones
zone create cylinder point 0 (0,0,0) point 1 (1,0,0) point 2 (0,2,0) ...
                     point 3 (0,0,1) size 4 5 4
zone reflect normal (1,0,0)
zone reflect normal (0,0,1)
; Constitutive Model and properties
zone cmodel assign strain-softening 
zone property bulk 1.19e10 shear 1.1e10
zone property cohesion 2.72e5 friction 44 tension 2e5
zone property table-cohesion 'coh' table-friction 'fri'
;help文件→Theory and Background→Constitutive Models→Plastic Model Group→Strain-Softening有介绍
table 'coh' add (0,2.72e5) (1e-4,2e5) (2e-4,1.5e5) (3e-4,1.03e5) (1,1.03e5)
table 'fri' add (0,44) (1e-4,42) (2e-4,40) (3e-4,38) (1,38)
; Boundary Conditions
zone face apply velocity (0, 2e-7,0) range position-y -0.1 0.1 
zone face apply velocity (0,0,0) range position-y 1.9 2.01
; Histories
zone history displacement-y position (0,0,0)
zone history stress-yy position (0,1,0)
zone history stress-yy position (1,1,0)

zone gridpoint initialize pore-pressure 1e5

model step 3000
model save 'Softening'

2.渗流场本构模型的选择命令

zone fluid cmodel assign isotropic (anisotropic/null) range+范围

注意:不透水区域和不透水边界的区分

model new
model config fluid ;加载渗流场板块
model fluid active on
zone fluid biot off
;二者紧跟渗流板块,默认打开,若需关闭将on改为off

; Create zones
zone create brick  size 8 5 10 
zone face skin
; Mech constitutive model and properties
zone cmodel assign elastic
zone property bulk 1e9 shear 5e8 density 2000
; Fluid constitutive model and properties
zone fluid cmodel assign isotropic
zone fluid property porosity 0.45 permeability 2e-10
zone gridpoint initialize fluid-modulus 2e9
zone initialize fluid-density 1e3
; Boundary Conditions
zone face apply velocity-normal 0 range group 'East' or 'West'
zone face apply velocity-normal 0 range group 'North' or 'South'
zone face apply velocity-normal 0 range group 'Bottom'
; Initial conditions
model gravity 10
zone water density 1e3
zone water plane origin (0,0,1) normal (0,0,1)
;zone gridpoint initialize saturation 0 range position-z 3.1 5 
zone initialize-stress ratio 0.5
model solve

3.渗流场的参数介绍

①比奥系数的默认值=1,孔隙率的默认值=0.5;

zone fluid property porosity 0.45

zone fluid property biot 0.85

zone fluid property permeability 2e-10

zone gridpoint initialize fluid-modulus 2e9

zone gridpoint initialize saturation 0.9

zone gridpoint initialize fluid-tension -1e6

zone initialize fluid-density 1e3  ★★★★  zone water density 1e3

②FLAC渗透系数=传统土力学渗透系数/9.8e3(≈1e4)

③比奥系数:孔隙压力变化时,材料单元中流体体积的获得(或损失)与该单元体积变化的的比值。默认值为1,其值介于0~1之间,越接近1越不可被压缩。

zone fluid biot on自定义打开,此时渗流场计算用比奥系数比奥模量计算;

zone fluid biot off默认情况,渗流场计算用流体模量(2e9)孔隙率计算

(此时,比奥系数为1.0,表示颗粒不可压缩,模型骨架可以压缩)

4.渗流案例-具有自由表面稳态流模拟


model new
fish define qflac
    local qval  = 0.0
    loop foreach local pnt gp.list
        local fval = gp.pos.x(pnt) - 0.001
        if fval < 0.0 then
            qval = qval + gp.flow(pnt)
        end_if
    end_loop
    qflac = qval /0.15 ; scale for unit thickness
    global qsol = 1e-10*1e3*10.*(6.*6.-1.2*1.2)/(2.*9.)
end
;生成一个渗透面
fish define show_seepage_face
    local name = 'seepage_face'
    local gset = geom.set.find(name)
    if gset # null then
        local ii = geom.set.remove(name)
    endif
    gset = geom.set.create(name)
    local n1 = geom.node.create(gset,vector(9.0,0,1.2))
    local n2 = geom.node.create(gset,vector(9.0,0,1.8))
    local e1 = geom.edge.create(gset,n1,n2)
end
model title "Steady state flow through a vertical embankment-case 1-4"

model configure fluid
zone create brick size 30 1 20 point 1 (9.0,0,0) point 2 (0,0.15,0) ...
                               point 3 (0,0,6.0)
; --- fluid flow model ---
zone fluid cmodel assign isotropic
zone fluid property permeability 1e-10 porosity 0.3
zone fluid biot off
zone gridpoint initialize fluid-modulus 1e3
zone gridpoint initialize saturation 0.0
zone gridpoint initialize saturation 1.0   ...
                          range union position-x 0 position-z 0.0 1.19
zone gridpoint initialize pore-pressure 1.2e4 grad (0,0,-1e4) ...
                          range position-z 0.0 1.19
zone face apply pore-pressure 6.0e4 grad 0 0 -1e4 ...
                          range position-x 0.0
zone face apply pore-pressure 1.2e4 grad 0 0 -1e4 ...
                          range position-x 9.0 position-z 0.0 1.19
zone face apply pore-pressure 0.0 ...
                          range position-x 9.0 position-z 1.2 6.0
; Add particle tracks
zone fluid track create line begin (0,0.1,0.5) end (0,0.1,5.5) ...
                             segment 12 group "set1"
zone fluid track active on
; --- settings ---
zone initialize fluid-density 1e3
zone gridpoint initialize fluid-tension 0.0
model gravity 0 0 -10
model mechanical active off
model fluid active on
; --- test ---
model solve ratio 1.e-3
[show_seepage_face]
list @qflac @qsol   ;输出数值模拟和理论计算结果
model save '1-4'
return

model new
model title "Steady state flow through a vertical embankment-case 2"

fish define qflac
    local qval  = 0.0
    loop foreach local pnt gp.list
        local fval = gp.pos.x(pnt) - 0.001
        if fval < 0.0 then
            qval = qval + gp.flow(pnt)
        end_if
    end_loop
    qflac = qval /0.15 ; scale for unit thickness
    global qsol = 1e-10*1e3*10.*(6.*6.-1.2*1.2)/(2.*9.)
end

fish define show_seepage_face
    local name = 'seepage_face'
    local gset = geom.set.find(name)
    if gset # null then
        local ii = geom.set.remove(name)
    endif
    gset = geom.set.create(name)
    local n1 = geom.node.create(gset,vector(9.0,0,1.2))
    local n2 = geom.node.create(gset,vector(9.0,0,1.8))
    local e1 = geom.edge.create(gset,n1,n2)
end

model configure fluid
zone create brick size 30 1 20 point 1 (9.0,0,0) point 2 (0,0.15,0) ...
                               point 3 (0,0,6.0)
; --- fluid flow model ---
zone fluid cmodel assign isotropic
zone fluid property permeability 1e-10 porosity 0.3
zone fluid biot off
zone gridpoint initialize fluid-modulus 1e3
zone gridpoint initialize saturation 1.0
zone gridpoint initialize saturation 0.0 ...
                          range position (0.01,0,5.99) (6.0,0.15,6.0)
zone gridpoint initialize pore-pressure 6.0e4 grad (0,0,-1e4) ...
                          range position-z 0.0 6.0


zone face apply pore-pressure 6.0e4 grad 0 0 -1e4 ...
                          range position-x 0.0
zone face apply pore-pressure 1.2e4 grad 0 0 -1e4 ...
                          range position (9.0,0,0) (9.0,0.15,1.19)
zone face apply pore-pressure 0.0 ...
                          range position (9.0,0,1.2) (9.0,0.15,6.0)
; --- settings ---
zone initialize fluid-density 1e3
zone gridpoint initialize fluid-tension 0.0
model gravity 0 0 -10
model mechanical active off
model fluid active on
; --- test ---
model solve ratio 1e-3
@show_seepage_face
list @qflac @qsol
model save 'ch2b'

5.渗流边界条件

model new
model title "Steady state flow through a vertical embankment-case 1-5"

fish define qflac
    local qval  = 0.0
    loop foreach local pnt gp.list
        local fval = gp.pos.x(pnt) - 0.01
        if fval < 0.0 then
            qval = qval + gp.flow(pnt)
        end_if
    end_loop
    qflac = qval /3 ; scale for unit thickness
    global qsol = 1e-10*1e3*10.*(6.*6.-1.2*1.2)/(2.*9.)
end

fish define cxj
    local px  = 0.0 
    Paixie=0
    
    loop foreach local qq gp.list
        local e = gp.pos.x(qq) + 0.1
        if e >= 9.0 then
            px = px + gp.flow(qq)
        end_if
    end_loop
    Paixie = px/3 ; scale for unit thickness
    
    z0=gp.near(9,0.5,0)
    z00=gp.near(9,1.5,0)
    z1=gp.near(9,1.5,1)
    z2=gp.near(9,1.5,2)
    z3=gp.near(9,1.5,3)
    z4=gp.near(9,1.5,4)
    z5=gp.near(9,1.5,5)
    z6=gp.near(9,1.5,6)
    
    Zq0=gp.flow(z0)
    Zq00=gp.flow(z00)
    Zq1=gp.flow(z1)
    Zq2=gp.flow(z2)
     Zq3=gp.flow(z3)
    Zq4=gp.flow(z4)
    Zq5=gp.flow(z5)
    Zq6=gp.flow(z6)

end

model configure fluid
zone create brick size 30 5 20   point 1 (9.0,0,0) point 2 (0,3,0) ...
                               point 3 (0,0,6.0) 
                               
zone group 'n' range position-x 8 9 position-z 0 4
; --- fluid flow model ---
zone fluid cmodel assign isotropic
;zone fluid cmodel assign null range group 'n'
zone fluid property permeability 1e-9 porosity 0.3
zone fluid biot off
zone gridpoint initialize fluid-modulus 1e3
zone gridpoint initialize saturation 1
;zone gridpoint initialize saturation 1.0   ...
                          ;range union position-x 0 position-z 0.0 1.19
zone gridpoint initialize pore-pressure 12e4 grad (0,0,-1e4) ...
                          range position-x 0.0

;range position-x 0.0  X=0面上;;;;

zone face apply pore-pressure 12e4 grad 0 0 -1e4 ...
                          range position-x 0.0
                       
;zone face apply pore-pressure 12e4 grad 0 0 -1e4 ...
                          ;range position-x 9.0 ;position-z 0 4
zone face apply pore-pressure 0.0 range position-z 0 position-x 5 6


; Add particle tracks
zone fluid track create line begin (0,1.5,0) end (0,1.5,6) ...
                             segment 12 group "set1"
zone fluid track active on
; --- settings ---
zone initialize fluid-density 1e3
zone gridpoint initialize fluid-tension 0.0
model gravity 0 0 -10
model mechanical active off
model fluid active on
; --- test ---
model step 5000
;model solve ratio 8.e-3
@cxj
list @qflac @qsol @Paixie

list @Zq0 @Zq00 @Zq1 @Zq2 @Zq4 @Zq5 @Zq6
model save '1-5'

zone gridpoint initialize pore-pressure(左)zone face apply pore-pressure(右)

水位←←→→水头

6.渗流场FISH函数

①FISH 的目的:纯计算、内置变量调用内置变量反调用、一些commond功能加强;;

②自定义变量:全局(local)和局部(global)

③FISH函数等号约定:右边的值给左边,并保持数据类型;

节点内置变量单元内置变量
gp.biot.moduluszone.flux
gp.ppzone.fluid.model
gp.pp.fixzone.fluid.prop
gp.flowzone.fluid.ratio
gp.fluid.moduluszone.fluid.stress.normal
gp.fluid.tensionzone.fluid.time.total
gp.satzone.fluid.timestep

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值