Fluent中Profile文件的编写
- 格式:doc
- 大小:107.00 KB
- 文档页数:3
FLUENT中应用PROFILE实现分区计算1)问题的提出在做CFD计算的时候,常常被计算能力所限制,也就是你能模拟的网格总的数量。
过这个数量的话,你的计算机就无法承受啦!针对这个问题,各方面的工作一直在做,如自适应网格,把变化剧烈的地方的网格加密,不剧烈的地方变稀;还有在物面附近网格加密,捕捉壁面效应。
这些都是从数值计算本身想办法。
另一方面,计算机的速度在不断的提高,同时并行计算正在成为发展的大方向!但是,如果你不具有“豪华”的计算能力,却要面对相对复杂的计算,该怎么办呢?就向中国人用算盘也能计算原子弹爆炸一样。
只要你仔细的思考,方法总是有的!当然具体的方法各不相同。
下面仅举一个高超音速流场分区计算算例!算是抛砖引玉啦!2)算例描述要计算某飞行器在高超声速飞行时的表面热流,属三维复杂形体。
同时热流的计算对网格的要求相对较高。
经初步分析网格数量要在300万左右,基本上超过了单机的计算能力范围!下面的说明中用一个二维的简单模型做为示意。
3)方法及理论基础根据超声速流场中的扰动波的传播原理,也就是卡门三原理,简单的说就是:1)上游禁讯原理2)分域原理3)集中作用原理这个原理是说在高超声速流场中下游流场只受上游流场的影响,反过来下游的流场不影响上游。
同时根据飞行器的外形一般中部相对来讲构造简单,流场比较稳定。
这样就产生了这样的想法。
把整个飞行器从中间分开,两段分开计算,就解决了网格的问题!现在要解决问题的重点就是上游流场数据到下游流场的传递问题。
在FLUENT中采用PROFILE的形式实现。
4)计算模型图1.整体模型在图1中给出整体模型,用一个尖头的旋成体来模拟整个飞行器。
图2.模型的前半段图3.模型的后半段同时要说明的是,整个模型长700MM,前半段在300MM的位置分开,后半段的分开位置是250,这样做是为了,在前半段的计算结果中,在250MM的位置取计算结果,作为后面的流场的入口条件,留出这样一个范围会使流场稳定,提高计算结果的精度。
FLUENT 软件操作界面中英文对照File 文件Read 读取文件:scheme 方案journal 日志 profile 外形 Write 保存文件 Import :进入另一个运算程序 Interpolate :窜改,插入Hardcopy :复制,Batch opti ons —组选项Save layout 保存设计 Grid 网格| F 屆 Grid Define Solve i-Read► Write►Import ► Export-, Interpolate —Hardcopy...Batch Options.^Save LayoutRun...RSF...ExitDefine Models模型:solver解算器Pressure based 基于压力Den sity based基于密度末解用丁 pressure based,雀改用Censity based 岀观不苻合秦相36的摄不,请甸pres 羊WE base d Al density based 慎仆则迢.41刊卜 IS 况?北外.血OC ・EHU ^ cotipled >(/^ ptiaw ccupl ed simple 可这孔 & pimple ijEpiso 逞划.--■轟=Sortg 冲-丸布时制* ^jfe-5-6 1844DOden ba&ed 亘工F 吋.压聲血ptessurt ba$«i 适可于那可乐册斤"dens Ply based 把丸“河悴掏t :至殳嗟之一.刑牛可爪門d 的创R 监當歎1一,般如人锻暮叫人丄有用 轴怀,火薩墟迭牛才H5)-0 程:yje8D8-丸布门 1叫;20GS-3-7 10-2ODQ歆;I :谢PrflSsdrfl-Bawd Soker ^Fluflnt 它星英于压力快的束解孤便丹的圮压力修止畀法"求释旳控制片悝足标联式的,擅K 家鮮不町压縮舐Mb 对于町压砂也可旦索麟;Fk«nl 6-3 tl 前的I 板』冷孵臥 B fjS4^r«^at«d &Olvar fli Cfruptod Solvtr,的实也fltje Pr#4iurft-ea5<KJ ScFvAi 约两种虽幵方ib应理拈Fluent 氐J 眇坝犢型小的.它拈垒于曲喪红旳求聲塞,最辑的出H .也桿 艮先■那式的.丰誓■載密式冇Roz AU$hk>谏方法的初和&让Fhwrt 耳有比我甘的求IT 可压胃(说 劫謹力,們耳帕榕式淮冇琴加IF 科限闾辉,倒比还丰A 完荐匚Coupted 的算送t 对子慨站何Hh 地们足便用円匕口讷油皿购 加£未处為 性上世魅端计棒低逢刈趾.擁说的DansJty-Bjiwd Solver F ft St SiMPLEC, P 怡DE 些选以的.闪为進些ffliQl ;力修止鼻袪・不金在这种类崖的我押■中氏现泊I 建址祢匹足整用Fw»ur 护P.sed Solver 堺决昧的利底*implicit 隐式, explicit 显示Space 空间:2D , axisymmetric (转动轴), axisymmetric swirl (漩涡转动轴);Time 时间 :steady 定常,unsteady 非定常 Velocity formulatio n 制定速度: absolute 绝对的;relative 相对的Gradient option 梯度选择:以单元作基础;以节点作基础;以单元作梯度的最小正方形。
/***********************************************************************//* vprofile.c */ /* UDF for specifying steady-state velocity profile boundary condition *//***********************************************************************/#include "udf.h"DEFINE_PROFILE(inlet_x_velocity, thread, position){real x[ND_ND]; /* this will hold the position vector */real y;face_t f;begin_f_loop(f, thread){F_CENTROID(x,f,thread);y = x[1];F_PROFILE(f, thread, position) = 20. - y*y/(.0745*.0745)*20.;}end_f_loop(f, thread)}/**********************************************************************//* unsteady.c */ /* UDF for specifying a transient velocity profile boundary condition *//**********************************************************************/#include "udf.h"DEFINE_PROFILE(unsteady_velocity, thread, position){face_t f;begin_f_loop(f, thread){real t = RP_Get_Real("flow-time");F_PROFILE(f, thread, position) = 20. + 5.0*sin(10.*t);}end_f_loop(f, thread)}/******************************************************************//* UDF that adds momentum source term and derivative to duct flow */ /******************************************************************/#include "udf.h"#define CON 20.0DEFINE_SOURCE(cell_x_source, cell, thread, dS, eqn){real source;if (C_T(cell,thread) <= 288.){/* source term */source = -CON*C_U(cell,thread);/* derivative of source term w.r.t. x-velocity. */dS[eqn] = -CON;}elsesource = dS[eqn] = 0.;return source;}/*********************************************************************//* UDF for specifying a temperature-dependent viscosity property */ /*********************************************************************/#include "udf.h"DEFINE_PROPERTY(cell_viscosity, cell, thread){real mu_lam;real temp = C_T(cell, thread);if (temp > 288.)mu_lam = 5.5e-3;else if (temp > 286.)mu_lam = 143.2135 - 0.49725 * temp;elsemu_lam = 1.;return mu_lam;}/**************************************************************//* rate.c *//* UDF for specifying a reaction rate in a porous medium *//**************************************************************/#include "udf.h"#define K1 2.0e-2#define K2 5.DEFINE_VR_RATE(user_rate, c, t, r, mole_weight, species_mf, rate, rr_t) {real s1 = species_mf[0];real mw1 = mole_weight[0];if (FLUID_THREAD_P(t) && THREAD_VAR(t).fluid.porous)*rate = K1*s1/pow((1.+K2*s1),2.0)/mw1;else*rate = 0.;}/***********************************************************************//* UDF for computing the magnitude of the gradient of T^4 */ /***********************************************************************/#include "udf.h"/* Define which user-defined scalars to use. */enum{T4,MAG_GRAD_T4,N_REQUIRED_UDS};DEFINE_ADJUST(adjust_fcn, domain){Thread *t;cell_t c;face_t f;/* Make sure there are enough user-defined scalars. */if (n_uds < N_REQUIRED_UDS)Internal_Error("not enough user-defined scalars allocated");/* Fill first UDS with temperature raised to fourth power. */ thread_loop_c (t,domain){if (NULL != THREAD_STORAGE(t,SV_UDS_I(T4))){begin_c_loop (c,t){real T = C_T(c,t);C_UDSI(c,t,T4) = pow(T,4.);}end_c_loop (c,t)}}thread_loop_f (t,domain){if (NULL != THREAD_STORAGE(t,SV_UDS_I(T4))){begin_f_loop (f,t){real T = 0.;if (NULL != THREAD_STORAGE(t,SV_T))T = F_T(f,t);else if (NULL != THREAD_STORAGE(t->t0,SV_T))T = C_T(F_C0(f,t),t->t0);F_UDSI(f,t,T4) = pow(T,4.);}end_f_loop (f,t)}}/* Fill second UDS with magnitude of gradient. */thread_loop_c (t,domain){if (NULL != THREAD_STORAGE(t,SV_UDS_I(T4)) &&NULL != T_STORAGE_R_NV(t,SV_UDSI_G(T4))){begin_c_loop (c,t){C_UDSI(c,t,MAG_GRAD_T4) = NV_MAG(C_UDSI_G(c,t,T4));}end_c_loop (c,t)}}thread_loop_f (t,domain){if (NULL != THREAD_STORAGE(t,SV_UDS_I(T4)) &&NULL != T_STORAGE_R_NV(t->t0,SV_UDSI_G(T4))){begin_f_loop (f,t){F_UDSI(f,t,MAG_GRAD_T4)=C_UDSI(F_C0(f,t),t->t0,MAG_GRAD_T4);}end_f_loop (f,t)}}}/**************************************************************//* Implementation of the P1 model using user-defined scalars *//**************************************************************/#include "udf.h"/* Define which user-defined scalars to use. */enum{P1,N_REQUIRED_UDS};static real abs_coeff = 1.0; /* absorption coefficient */static real scat_coeff = 0.0; /* scattering coefficient */static real las_coeff = 0.0; /* linear-anisotropic *//* scattering coefficient */static real epsilon_w = 1.0; /* wall emissivity */DEFINE_ADJUST(p1_adjust, domain){/* Make sure there are enough user defined-scalars. */if (n_uds < N_REQUIRED_UDS)Internal_Error("not enough user-defined scalars allocated");}DEFINE_SOURCE(energy_source, c, t, dS, eqn){dS[eqn] = -16.*abs_coeff*SIGMA_SBC*pow(C_T(c,t),3.);return -abs_coeff*(4.*SIGMA_SBC*pow(C_T(c,t),4.) - C_UDSI(c,t,P1)); }DEFINE_SOURCE(p1_source, c, t, dS, eqn){dS[eqn] = -abs_coeff;return abs_coeff*(4.*SIGMA_SBC*pow(C_T(c,t),4.) - C_UDSI(c,t,P1)); }DEFINE_DIFFUSIVITY(p1_diffusivity, c, t, i){return 1./(3.*abs_coeff + (3. - las_coeff)*scat_coeff);}DEFINE_PROFILE(p1_bc, thread, position){face_t f;real A[ND_ND],At;real dG[ND_ND],dr0[ND_ND],es[ND_ND],ds,A_by_es;real aterm,alpha0,beta0,gamma0,Gsource,Ibw;real Ew = epsilon_w/(2.*(2. - epsilon_w));Thread *t0=thread->t0;/* Do nothing if areas aren't computed yet or not next to fluid. */if (!Data_Valid_P() || !FLUID_THREAD_P(t0)) return;begin_f_loop (f,thread){cell_t c0 = F_C0(f,thread);BOUNDARY_FACE_GEOMETRY(f,thread,A,ds,es,A_by_es,dr0);At = NV_MAG(A);if (NULLP(T_STORAGE_R_NV(t0,SV_UDSI_G(P1))))Gsource = 0.; /* if gradient not stored yet */elseBOUNDARY_SECONDARY_GRADIENT_SOURCE(Gsource,SV_UDSI_G(P1),dG,es,A_by_es,1.);gamma0 = C_UDSI_DIFF(c0,t0,P1);alpha0 = A_by_es/ds;beta0 = Gsource/alpha0;aterm = alpha0*gamma0/At;Ibw = SIGMA_SBC*pow(WALL_TEMP_OUTER(f,thread),4.)/M_PI;/* Specify the radiative heat flux. */F_PROFILE(f,thread,position) =aterm*Ew/(Ew + aterm)*(4.*M_PI*Ibw - C_UDSI(c0,t0,P1) + beta0);}end_f_loop (f,thread)}DEFINE_HEAT_FLUX(heat_flux, f, t, c0, t0, cid, cir){real Ew = epsilon_w/(2.*(2. - epsilon_w));cid[0] = Ew * F_UDSI(f,t,P1);cid[3] = 4.0 * Ew * SIGMA_SBC;}#define DEFINE_ADJUST(name, domain) \void name(Domain *domain)#define DEFINE_INIT(name, domain) \void name(Domain *domain)#define DEFINE_ON_DEMAND(name) \void name(void)#define DEFINE_RW_FILE(name, fp) \void name(FILE *fp)#define DEFINE_CG_MOTION(name, dt, vel, omega, time, dtime) \void name(void *dt, real vel[], real omega[], real time, real dtime)#define DEFINE_DIFFUSIVITY(name, c, t, i)real name(cell_t c, Thread *t, int i)#define DEFINE_GEOM(name, d, dt, position) \void name(Domain *d, void *dt, real *position)#define DEFINE_GRID_MOTION(name, d, dt, time, dtime) \void name(Domain *d, void *dt, real time, real dtime)#define DEFINE_HEAT_FLUX(name, f, t, c0, t0, cid, cir) \void name(face_t f, Thread *t, cell_t c0, \Thread *t0, real cid[], real cir[])#define DEFINE_NOX_RATE(name, c, t, NOx) \void name(cell_t c, Thread *t, NOx_Parameter *NOx)#define DEFINE_PROFILE(name, t, i) \void name(Thread *t, int i)#define DEFINE_PROPERTY(name, c, t) \real name(cell_t c, Thread *t)#define DEFINE_SCAT_PHASE_FUNC(name, c, f) \real name(real c, real *f)#define DEFINE_SOURCE(name, c, t, dS, i) \real name(cell_t c, Thread *t, real dS[], int i)#define DEFINE_SR_RATE(name, f, t, r, mw, yi, rr) \void name(face_t c, Thread *t, \Reaction *r, real *mw, real *yi, real *rr)#define DEFINE_TURB_PREMIX_SOURCE(name, c, t, turbulent_flame_speed, sourc e) \void name(cell_t c, Thread *t, real *turbulent_flame_speed, real *source)#define DEFINE_TURBULENT_VISCOSITY(name, c, t) real name(cell_t c, Thread * t)#define DEFINE_UDS_FLUX(name, f, t, i) \real name(face_t f, Thread *t, int i)#define DEFINE_UDS_UNSTEADY(name, c, t, i, apu, su) \void name(cell_t c, Thread *t, int i, real *apu, real *su)#define DEFINE_VR_RATE(name, c, t, r, mw, yi, rr, rr_t) \void name(cell_t c, Thread *t, \Reaction *r, real *mw, real *yi, \real *rr, real *rr_t)#define DEFINE_CAVITATION_RATE(name, c, t, p, rhoV, rhoL, vofV, p_v, n_b, m_d ot) \void name(cell_t c, Thread *t, real *p, real *rhoV, real *rhoL, real *vofV, \ real *p_v, real *n_b, real *m_dot)#define DEFINE_DRIFT_DIAM(name, c, t) \real name(cell_t c, Thread *t)#define DEFINE_EXCHANGE_PROPERTY(name, c, mixture_thread, \second_column_phase_index, first_column_phase_index) \real name(cell_t c, Thread *mixture_thread, int second_column_phase_index,\ int first_column_phase_index)#define DEFINE_VECTOR_EXCHANGE_PROPERTY(name, c, mixture_thread, \ second_column_phase_index, first_column_phase_index, vector_result) \void name(cell_t c, Thread *mixture_thread, int second_column_phase_index,\int first_column_phase_index, real *vector_result)#define DEFINE_DPM_BODY_FORCE(name, p, i) \real name(Tracked_Particle *p, int i)#define DEFINE_DPM_DRAG(name, Re) \real name(real Re)#define DEFINE_DPM_SOURCE(name, c, t, S, strength, p) \void name(cell_t c, Thread *t, dpms_t *S, \real strength, Tracked_Particle *p)#define DEFINE_DPM_PROPERTY(name, c, t, p) \real name(cell_t c, Thread *t, Tracked_Particle *p)#define DEFINE_DPM_OUTPUT(name, header, fp, p, t, plane) \void name(int header, FILE *fp, \Tracked_Particle *p, Thread *t, Plane *plane)#define DEFINE_DPM_EROSION(name, p, t, f, normal, alpha, Vmag, mdot) \void name(Tracked_Particle *p, Thread *t, \face_t f, real normal[], real alpha, \real Vmag, real mdot)#define DEFINE_DPM_SCALAR_UPDATE(name, c, t, initialize, p) \void name(cell_t c, Thread *t, int initialize, \Tracked_Particle *p)#define DEFINE_DPM_LAW(name, p, ci)void name(Tracked_Particle *p, int ci)#define DEFINE_DPM_SWITCH(name, p, ci) \void name(Tracked_Particle *p, int ci)#define DEFINE_DPM_INJECTION_INIT(name, I) \void name(Injection *I)。
fluent 操作界面中英文对照Read 读取文件:scheme 方案journal 日志profile 外形 Write 保存文件Import :进入另一个运算程序 Interpolate :窜改,插入 Hardcopy : 复制, Batch options 一组选项 Save layout 保存设计Grid 网格Check 检查Info 报告:size 尺寸 ;memory usage 内存使用 情况;zones 区域;partitions 划分存储区 Polyhedral 多面体:Convert domain 变换范围Convert skewed cells 变换倾斜的单元Merge 合并 Separate 分割Fuse (Merge 的意思是将具有相同条件的边界合 并成一个;Fuse 将两个网格完全贴合的边界融合 成内部(interior)来处理,比如叶轮机中,计算多 个叶片时,只需生成一个叶片通道网格,其他通 过复制后,将重合的周期边界Fuse 掉就行了。
注意两个命令均为不可逆操作,在进行操作时注 意保存case) Zone 区域: append case file 添力口 case 文档 Replace 取代;delete 删除;deactivate 使复 位; Surface mesh 表面网孔Reordr 追加,添加:Domain 范围;zones 区域; Print bandwidth 打印 Scale 单位变换 Translate 转化Rotate 旋转 smooth/swap 光滑/交换CheckInfo ► Polyhedra►Merge...Separate ► Fuse...Zone►Surface Mesh... Reorder►Scale...Translate...Rotate...Smooth/Swap...ieGrid ] Define Solvea:w 1E3 SolverSolver* Pressure Based 'Density Based Space「2DL Axisymmetric 广 Axcsymmetric Swirl m 3DVelgty Formulatiqn • Absolute RelativeGradient Option区 Implicit「Explicit Time# SteadyUnsteadyPorous Formulation• Superficial VelocityPhysical Veiccity6K | Cancel] Help |Pressure based 基于压力 Density based 基于密度Models 模型:solver 解算器Formulation # Green-Gauss Cell Oased Green-Gauss N 。
Fluent经典问题答疑1.在gambit中对一体积成功的进行了体网格,网格进行了examine mesh,也没有什么问题,可当要进行边界类型(boundary type)的设定时,却发现type 只有node,element_side两项,没有什么wall,pressure_outlet等。
为何无法定义边界?答:因为没有选择求解器为fluent 5/62.在FLUENT模拟以后用display下的操作都无法显示,不过刚开始用的是好的,然后就不行了,为什么?答:DirectX 控制面板中的“加速”功能禁用即可3.把带网格的几个volume,copy到另一处,但原来split的界面,现在都变成了wall,怎么才能把wall变成内部流体呢?答:直接边界面定义为interior即可第3题:在数值模拟过程中,离散化的目的是什么?如何对计算区域进行离散化?离散化时通常使用哪些网格?如何对控制方程进行离散?离散化常用的方法有哪些?它们有什么不同?注:我将原题目的提问顺序进行了修改调整,这样更利于回答。
4.FLUENT中常用的文件格式类型:dbs,msh,cas,dat,trn,jou,profile等有什么用处?在Gambit目录中,有三个文件,分别是default_id.dbs,jou,trn文件,对Gambit运行save,将会在工作目录下保存这三个文件:default_id.dbs,default_id.jou,default_id.trn。
jou文件是gambit命令记录文件,可以通过运行jou文件来批处理gambit命令;dbs文件是gambit默认的储存几何体和网格数据的文件;trn文件是记录gambit命令显示窗(transcript)信息的文件;msh文件可以在gambit划分网格和设置好边界条件之后export中选择msh文件输出格式,该文件可以被fluent求解器读取。
Case文件包括网格,边界条件,解的参数,用户界面和图形环境。
FLUENT UDF 应用实例:传热问题第二第三类热边界条件转换成第一类边界条件1 引言传热问题的常见边界条件可归纳为三类,以稳态传热为例,三类边界条件的表达式如下。
恒温边界(第一类边界条件):const w T = (1-1)恒热流密度边界(第二类边界条件):const w T n λ∂⎛⎫-= ⎪∂⎝⎭ (1-2)对流换热边界(第三类边界条件):()w f wT h T T n λ∂⎛⎫-=- ⎪∂⎝⎭ (1-3)2 问题分析2.1 纯导热问题以二维稳态无源纯导热问题为例,如图1所示,一个10×10m 2的方形平面空间,上下面以及左边为恒温壁面(21℃),右边第二类、第三类边界条件如图所示。
为方便问题分析,内部介质的导热系数取1W/m ℃。
模型水平垂直方向各划分40个网格单元,不计边界条件处壁厚。
图1 问题描述采用FLUENT 软件自带边界条件直接进行计算,结果如图2所示。
(a )第二类边界条件(b )第三类边界条件 图2 软件自带边界计算结果参考数值传热学[3],对于第二类(式1-2)、第三类(式1-3)边界条件可通过补充边界点代数方程的方法进行处理,结果如下。
第二类边界条件:11M M q T T δλ-=+(2-1)第三类边界条件:11/1M M fh h T T T δδλλ-⎛⎫⎛⎫=++⎪ ⎪⎝⎭⎝⎭(2-2) 其中,T M 为边界节点处的温度(所求值),T M-1为靠近边界第一层网格节点处的温度,δ为靠近边界第一层网格节点至边界的法向距离,q 为热流密度,h 为对流换热系数。
将以上两式通过UDF 编写成边界条件(DEFINE_PROFILE ),全部转换为第一类边界条件,计算结果如图3所示。
(a)第二类边界条件(b)第三类边界条件图3 UDF计算结果可以看出,经过UDF边界转换后的计算结果与软件自带边界计算结果几乎完全相同。
2.2对流换热问题以上处理方式对于导热问题肯定是适用的,但是对于对流换热问题能否用同样的方式处理呢,笔者认为,严格意义上讲式2-1和2-2对与对流换热问题是不能用的,因为边界内侧的流体与壁面的换热机制是对流换热。
1.瞬态Profile
标准的Profile 文件格式如下
((profile-name transient n periodic)
(field_name_1 a1 a2 a3 …… an)
(field_name_2 b1 b2 b3 …… bn)
…
(field_name_r r1 r2 r3 ……rn))
Profile-name 为Profile 名称,少于64个字符,field-name 必须包含一个
time 变量,并且时间变量必须以升序排列。
transient 为关键字,瞬态profile
文件必须包含此关键字。
n 为每一个变量的数量。
periodic ?标志该profile 文
件是否为时间序列,1表示时间为周期文件,0表示非周期文件。
例1:
((move transient 3 1)
(time 0 1 2) (v_x 3 5 3)
)
该profile 文件所对应的X 速度(v_x )随时间变化的曲线如下图所示
5
4
7
6
Time v _x
在profile 文件中经常使用的变量名称包括time (时间)、u 或v_x (x 方向
速度)、v 或v_y (y 方向速度)、w 或v_z (z 方向速度)、omega_x (x 方向角速
度)、omega_y (y 方向角速度)、omega_z (z 方向角速度)、temperature (温度)
等。
Profile 文件中的数据单位均为国际单位制。
例2:下图所示的Profile文件如下
(moveVelocity transient 5 0)
(time 0 0.25 0.5 0.75 1)
(v_x 0 0.1 0.2 0.3 0.4)
)
其中,moveVelocity为Profile文件名,transient表示瞬态,5为表示所取速度及时间变化点数,这里取5个点;time后所取点的时刻值;x后为所取点的x坐标;v_x为所取点的x向速度;所取的5个点组成速度与时间的线性关系。
虽然稳态profile文件可以再一定程度上定义网格运动,然而其存在着一些缺陷。
最主要的一些缺陷存在于以下一些方面:
(1)Profile无法精确的定义连续的运动。
其使用离散的点进行插值。
如果获得较为精确的运动定义,势必要定义很多点。
(2)一些情况下无法使用Profile。
比如稳态动网格。
Point,line,radial类型的Profile用以下格式
((profile1-name point|line|radial n)
(field-name a1 a2 …… an)
(field-name b1 b2 ……bn)
…
(field-name f1 f2 …… fn))
Line profile:用n个顺序排列的point (xi, yi, vi)来描述的profile,只用于2D问题,point间用0阶插值法插值。
例3:旋转角速度Profile文件的编写
((left 3 point)
(time 0 1 60)
(omega_z 30 30 30)
)
left为profile文件的名称,3表示3个时间点,time表示时间,时间有3个点,分别为0s,1s,60s;时间点和速度之间采用线性插值,也就是说,旋转速
度在0~60s之间,速度均为30rad/s。
-----精心整理,希望对您有所帮助!。