应用fluent二维单向流泥沙冲刷作用下河床变形代码【转载】
本代码转载自:http://www.codeforge.cn/read/260028/keti_2d_b.c__html
#include
"udf.h"
#define Rho 1002
#define g 9.81
#define s 2.65
#define m 0.4
#define d 0.0005
#define C 2
#define N
1000
DEFINE_GRID_MOTION(wall_motion,domain,dt,time,dtime)
{
Thread
*tf=DT_THREAD(dt);
face_t
f;
Node
*v;
real
A[ND_ND];
real
area,wall_shear_force;
real
Theta_cr0,Phi,Gamma;
real
Theta[N]={0.0};
real
Theta_cr[N]={0.0};
real
X[N]={0.0};
real
Y[N]={0.0};
real
Qo[N]={0.0};
real
Delta_h[N]={0.0};
real
Delta_h_v[N]={0.0};
real
wall_shear_stress[N]={0.0};
real
X1,X2,Y1,Y2;
real
a,b,c,e,z1,z2,z3,z4,w1,w2,w3,w4,v1,v2,v3,v4,p1,p2,p3;
real
NV_VEC(Delta_y);
int
i,j,n;
i=0;
j=0;
X2=0;
Y2=0;
NV_D(Delta_y,=,0.0,0.0,0.0);
Theta_cr0=0.047;
Phi=(32.5+1.27*d*1000)/180;
SET_DEFORMING_THREAD_FLAG(THREAD_T0(tf));
begin_f_loop(f,tf)
{
i++;
j++;
F_AREA(A,f,tf);
area=NV_MAG(A);
wall_shear_force=F_STORAGE_R_N3V(f,tf,SV_WALL_SHEAR)[0];
wall_shear_stress[i]=wall_shear_force/area;
Theta[i]=fabs(wall_shear_stress[i])/(g*(s-1)*d*Rho);
}
end_f_loop(f,tf)
i=0;
begin_f_loop(f,tf)
{
i++;
f_node_loop(f,tf,n)
{
X1=X2;
Y1=Y2;
v=F_NODE(f,tf,n);
X2=NODE_X(v);
Y2=NODE_Y(v);
if(n!=0)
{
Gamma=atan(fabs(Y2-Y1)/fabs(X2-X1));
a=1-0.85*0.85*tan(Phi)*tan(Phi);
b=-sin(Gamma)+tan(Phi)*tan(Phi)*0.85*cos(Gamma);
c=sin(Gamma)*sin(Gamma)-tan(Phi)*tan(Phi)*cos(Gamma)*cos(Gamma);
e=tan(Phi)*(1-0.85*tan(Phi));
Theta_cr[i]=Theta_cr0*((sqrt(b*b-a*c)-b)/e);
}
}
}
end_f_loop(f,tf)
i=0;
begin_f_loop(f,tf)
{
i++;
if(Theta[i]>Theta_cr[i])
Qo[i]=12*sqrt(g*(s-1)*pow(d,3.0)*Theta[i])*(Theta[i]-Theta_cr[i]);
else
Qo[i]=0;
}
end_f_loop(f,tf)
i=1;
begin_f_loop(f,tf)
{
i++;
f_node_loop(f,tf,n)
{
v=F_NODE(f,tf,n);
if(n!=0)
{
X[i]=NODE_X(v);
Y[i]=NODE_Y(v);
}
}
}
end_f_loop(f,tf)
i=1;
begin_f_loop(f,tf)
{
i++;
if(i<j-1)
{
p1=(Qo[i+1]-Qo[i-1])/(2*(X[i+1]-X[i]));
p2=(Y[i+1]-Y[i-1])/(2*(X[i+1]-X[i]));
p3=(Y[i+1]-2*Y[i]+Y[i-1])/((X[i+1]-X[i])*(X[i+1]-X[i]));
if(wall_shear_stress[i]>0)
Delta_h[i]=dtime*(-p1+C*p1*p2+C*Qo[i]*p3)/(m-1);
else
Delta_h[i]=dtime*(p1+C*p1*p2+C*Qo[i]*p3)/(m-1);
}
}
end_f_loop(f,tf)
i=4;
begin_f_loop(f,tf)
{
i++;
f_node_loop(f,tf,n)
{
if(i<j-4)
{
z1=(X[i-2]+X[i-1])/2;
z2=(X[i-1]+X[i])/2;
z3=(X[i]+X[i+1])/2;
z4=(X[i+1]+X[i+2])/2;
w1=(X[i]-z2)*(X[i]-z3)*(X[i]-z4);
w2=(X[i]-z1)*(X[i]-z3)*(X[i]-z4);
w3=(X[i]-z1)*(X[i]-z2)*(X[i]-z4);
w4=(X[i]-z1)*(X[i]-z2)*(X[i]-z3);
v1=(z1-z2)*(z1-z3)*(z1-z4);
v2=(z2-z1)*(z2-z3)*(z2-z4);
v3=(z3-z1)*(z3-z2)*(z3-z4);
v4=(z4-z1)*(z4-z2)*(z4-z3);
Delta_h_v[i]=w1*Delta_h[i-2]/v1+w2*Delta_h[i-1]/v2+w3*Delta_h[i]/v3+w4*Delta_h[i+1]/v4;
}
}
}
end_f_loop(f,tf)
i=4;
begin_f_loop(f,tf)
{
i++;
f_node_loop(f,tf,n)
{
v=F_NODE(f,tf,n);
if(i>4&&NODE_POS_NEED_UPDATE(v)&&i<j-5)
{
NODE_POS_UPDATED(v);
Delta_y[1]=Delta_h_v[i];
NV_V(NODE_COORD(v),+=,Delta_y);
}
}
}
end_f_loop(f,tf)
}
应用fluent二维单向流泥沙冲刷作用下河床变形代码【转载】的更多相关文章
- HDU 3316 My Brute(二维费用流)经典
My Brute Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- 关于TRIANGLE二维三角网格生成器在windows下的配置说明
近期须要用到三角网格生成的一些东西,所以就把TRIANGLE这个库编译了一下,发现编译过程还是略微有些纠结,于是就想到写下来.希望以后有些童鞋看到少走一些弯路. 首先很感谢eryar的帮助,很感谢! ...
- java生成二维码(带logo)
之前写过一篇不带logo的二维码实现方式,採用QRCode和ZXing两种方式 http://blog.csdn.net/xiaokui_wingfly/article/details/3947618 ...
- 利用phpqrcode二维码生成类库和imagecopymerge函数制拼接图片的经验
前期准备 引入phpqrcode类库(下载地址:https://sourceforge.net/projects/phpqrcode/) PHP开启GD扩展库支持 1.利用phpqrcode生成二维码 ...
- Android应用--QR的生成(二维码)
二维码的定义: 二维码(2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的. 在许多种类的二维条码中,常用的码制 ...
- java 二维码生成
直接上代码: 二维码生成核心类: package com.bbkj.wechat.tool; import java.awt.image.BufferedImage; import java.io.F ...
- 阐述二维码的原理以及使用google api和PHP QR Code来生成二维码
一.什么是二维码:二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的.在许多种类的二维条码中,常用的码 ...
- java实现二维码的生成与解析
简单介绍下二维码:二维码其实就是一种编码技术,只是这种编码技术是用在图片上了,将给定的一些文字,数字转换为一张经过特定编码的图片,而解析二维码则相反,就是将一张经过编码的图片解析为数字或者文字. 当然 ...
- Java生成二维码连接
本文使用的是Goodge的zxing 添加maven依赖 <dependency> <groupId>com.google.zxing</groupId> < ...
随机推荐
- iOS登录及token的业务逻辑
登录的业务逻辑 { http:是短连接. 服务器如何判断当前用户是否登录? // 1. 如果是即时通信类:长连接. // 如何保证服务器跟客户端保持长连接状态? // "心跳包" ...
- linux同步onedrive文件
定时任务 # 开机自启动 @reboot /root/system/start.sh # 从零点开始每小时执行一次任务 0 0 0/1 * * ? nohup rclone sync onedrive ...
- 判断对象是否为null
Person p=teacher as person; If (p!=null ) dostring (); 使用这样的方法效率高 使用 is时 进行两次判断效率低
- Computer Vision_18_Image Stitching:A survey on image mosaicing techniques——2013
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- process exporter 配置项解释
process exporter在prometheus中用于监控进程,通过process exporter,可从宏观角度监控应用的运行状态(譬如监控redis.mysql的进程资源等) 配置文件样例如 ...
- git 从存储库中删除敏感数据(删除文件历史)
1.如果您的历史记录中还没有包含敏感数据的存储库的本地副本,请将存储库克隆到本地计算机. git clone https://github.com/YOUR-USERNAME/YOUR-REPOSIT ...
- Linux开机启动项总结
在应急响应时有时会遇到系统被植入后门,添加启动项等操作,如果不清楚启动项的话,可能会被黑客植入一些开机启动项,无法彻底清除后门程序,所以在这梳理下启动项的东西 1.操作系统接管硬件以后,首先读入 /b ...
- 安装mysql 好不容易成功了 却连不上
[mysqld] skip-grant-tables datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbo ...
- Octave基本语法
基本运算 octave:3> 5+6 ans = 11 octave:4> 3-2 ans = 1 octave:5> 8*9 ans = 72 octave:6> 8/4 a ...
- LoadRunner生成测试报告
loadrunner笔记(三):设置.运行场景和生成测试报告 //上一篇的代码有点问题,问题出在 web_reg_find()函数中,这个函数简单的说是搜索下一步操作的请求对象(html)页面中 ...