pore
class pore
Properties
d
build对象
SET
模拟设置信息,可记录二次开发新的数据
TAG
模拟信息记录,用于记录和输出信息
solutePara
pore.addSolutePara命令执行后,将求解参数结构体存于这个参数,结构体字段详见pore函数工作表下方
见示例GeoThermalBox3
pathLimitRate
孔喉距离阈值比率,默认值0.5,取值范围建议[0.1,0.8],孔喉宽度小于rate*min(ballR)的连接视作构成孔隙的连接
cDiameterAdd
连接对应的孔喉附加宽度。由于二维颗粒堆积通常会封闭孔喉,需要增加一定的孔喉直径,以保证流体运移
cList
连接列表,每一行代表连接的起始单元Id与终止单元Id(连接1—3与3—1为不同连接),共2列,按单元Id升序排列
cIndexInverse
连接的反向连接Id,用于计算孔隙网络
cIndexNext
连接的下一个连接Id,同一颗粒的连接按逆时针排序,用于计算孔隙网络
cPore
连接所在孔隙Id,连接方向与孔隙遵循右手螺旋法则,故连接与孔隙一一对应,边界连接不在任何孔隙中,其值为反向连接所在孔隙
cPoreInverse
反向连接所在孔隙Id
cDiameter
连接对应孔喉的实际宽度(孔喉垂直于连接)
cLength
连接长度
cPathLength
孔喉长度,等于孔喉对应的两个单元较小的半径(不是直径!)
cKFlow
连接(孔喉)渗透系数
cnIndex
连接在nBall中的索引,用于将nBall大小的填充矩阵转化为对应接触对数组 e.g. cbFilter=d.mo.bFilter(cnIndex);%bonded filter of cList
见示例PoreHydraulicStatic3
nBallP
孔隙连接对应的nBall,当出现孤立颗粒时,需要加入额外邻居颗粒,可能与d.mo.nBall不同
nConnectFilter1
与nBallP对应的构成有效孔隙连接的过滤器
nConnectFilter2
用于记录孤立颗粒(团)的连接过滤器,避免孔隙面积计算出错
aWaterdR
单元流体作用减少半径,用于定义cDiameterAdd
NcPore
单元邻居孔隙Id,mNum行,每行记录对应单元邻居孔隙Id
poreC
孔隙对应连接元胞数组
poreNearby
孔隙的邻居孔隙元胞数组
poreFlowMass
孔隙渗流流体质量元胞数组
poreIndex
孔隙Id对应元胞数组
poreP
孔隙构成颗粒元胞数组(首尾列相同)
poreCAngle
*用于孔隙几何计算
porePAngle
*同上
porePAngleOverlap1
*同上
porePAngleOverlap2
*同上
porePOuterLength
*同上
porePOuterAngle
*同上
fluid_k
obj.pDensity=obj.fluid_k*obj.pPressure+obj.fluid_c;
fluid_c
obj.pDensity=obj.fluid_k*obj.pPressure+obj.fluid_c;
pNum
划分孔隙数目
pPoints
孔隙构成单元元胞数组,pNum行,每行记录构成孔隙的颗粒Id,由于poreP转化得到
pMass
孔隙流体质量列表
pArea
孔隙流体面积列表
pDensity
孔隙流体密度列表
pPressure
孔隙流体压力列表
pK
fluid_k of each pore
pC
fluid_c of each pore
dT
流体计算时间步
totalT
当前计算时刻
isCouple
是否耦合固体,isCouple=0流体不对颗粒产生力作用,isCouple=1,流体对颗粒产生力作用,涉及孔隙的重新剖分及数据传递
pThickness
孔隙厚度(沿Y方向)
isGPU
是否启用GPU计算
Methods
addSolutePara(obj,para)
添加溶质运移问题的求解参数,如温度,溶质浓度等,并初始化属性值(记录于p.SET中)
obj: pore对象; para: 求解参数结构体,记录于p.solutePara中
见GeoThermalBox示例
balance(obj,varargin)
流体迭代计算
varargin:可变输入参数(0-3个),详见下方
pId=getBallConnectedPore(obj,bId)
根据颗粒Id得到邻居孔隙Id
bId:颗粒Id
pId: 孔隙Id
setFlowPath(obj)
设置孔喉宽度(cDiameter)及渗径长度(cPathLength)
setInitialPores(obj)
搜索孔隙并初始化孔隙参数
conFilter,与platen连通的过滤器
见GeoThermalBox示例
setPressure(obj,varargin)
设置孔隙流体流体压力,并更新相关参数
varargin: 无输入或与p.pPressure等大数组
show(obj,varargin)
后处理绘图函数,详见下方
setNewPore(obj)
更新孔隙拓扑结构
setPlaten(obj,type)
设置platen单元状态
type:取值‘fix'或’unfix', 是否锁定platen单元坐标
见GeoThermalBox示例
pId=setBallPressure(obj,bId,pressure)
部分更新颗粒邻居孔隙流体压力,并更新相应参数(密度,质量等);常用于设置压力边界条件
bId:颗粒Id; pressure: 压力数组,大小与bId相同
pId: bId对应颗粒邻居孔隙Id
见GeoThermalBox示例
setDensity(obj,varargin)
设置部分孔隙流体密度,并更新质量等相应参数,类似setPressure
类似setPressure
obj=pore(d)
初始化孔隙类
d: build对象
obj:pore对象
见GeoThermalBox示例
setMass(obj,varargin)
设置孔隙流体质量,并更新相关参数,可用于设置流量边界条件,类似setPressure
setNewNBall(obj)
d.mo.nBall更新时,重新搜索孔隙
balanceConvection(obj,varargin)
对流计算(由于渗流(速度)引起的热对流,机械扩散等过程)
varargin:无输入时,计算所有求解参数(记录于p.solutePara)
balanceConvection0(obj,paraI)
对流计算基础函数
paraI:求解参数结构体
balanceDiffusion0(obj,paraI)
扩散计算(由于温度梯度,浓度梯度引起的热传导,分子扩散等过程)
paraI:同上
balanceFluid(obj)
渗流计算
ball2Fluid(obj)
根据固体颗粒堆积计算孔隙流体面积,密度,压力等
density2Mass(obj)
通过孔隙流体密度更新质量
density2Pressure(obj)
通过孔隙流体密度更新压力
dispNote(obj,note)
消息输出
note: 消息字符串
fluid2Ball(p)
计算流体对固体作用力,更新d.mo.mPX, d.mo.mPZ
gpuStatus=setGPU(obj,type0)
同build类
mass2Density(obj)
通过孔隙流体质量更新密度
nConnectFilter2New=getNConnectFilter2(obj,nConnectFilter1)
用于更新nConnectFilter2,避免孤立颗粒(团)引起计算出错
obj1=setNearbyPore(obj)
重新搜索孔隙拓扑结构,用于数据传递
obj:pore对象
pArea0=getPoreArea(p)
计算孔隙面积
pDensityNew=transferData(objOld,objNew)
基于新老孔隙拓扑结构更新孔隙流体密度(以满足质量守恒),进而更新流体压力
pId=setBallPara(obj,type,bId,value)
部分更新颗粒邻居孔隙求解参数 记录于p.SET中
type: 参数名; bId: 颗粒Id, value: 颗粒属性值
见GeoThermalBox示例
recordStatus(obj)
*待开发
setWaterdR(obj)
基于p.aWaterdR设置孔喉的水力半径,用于计算cDiameterAdd
showData(obj,vName)
绘图基函数,一般不直接使用
vName: 属性名,绘图内容