博士毕业需要至少三篇sci论文。
各高校博士毕业要求是不一样的,但多数学校要求三篇sci论文,有些985大学要求必须在sci主刊发表论文,有些大学在子刊发表也可以,有些学校的重点学科博士还要求在科学院的一区发表,没有一区论文不能毕业,所以博士发论文压力也是比较大的。
各高校对博士毕业有不同的学术要求,要求的SCI论文数目并不一样。博士生学术水平不同,有的可以发表几十篇,有的只能达到三五篇,一般来说,基本会要求发表3-5篇SCI论文。建议根据自身的实际情况酌情安排,有能力和时间的情况下最好多准备几篇,这对毕业大有帮助。
不是毕业的难度是非常高的,尤其是在发表论文方面,对于普通的博士来讲,在毕业之前必须发表三篇以上SSCI论文,除此之外,还要完成毕业论文,只有通过毕业论文答辩之后,才能拿到毕业证书,大部分的博士都会延期一年,也就是四年左右的时间毕业
SCI由外国机构创办,是国内外学术交流的`平台之一。但随着SCI论文相关标准“独霸”教育、科研领域各类重要核心评价体系,“科技创新价值追求扭曲、学风浮夸浮躁和急功近利”等弊端日益凸显。
《地理学报》是中国地理学会和中国科学院地理科学与资源研究所主办的学报级综合性学术刊物,本刊主要刊登能反映地理学科最高学术水平的最新研究成果,地理学与相邻学科的综合研究进展,地理学各分支学科研究前沿理论,与国民经济密切相关并有较大应用价值的地理科学论文。本刊欢迎国内外地理工作者将理论水平高、研究方法新、应用前景广的稿件投到本刊。 (1) 撰稿人应在写稿前广泛查阅本学科国内外最新的研究成果,并在参考文献中列出引用的文献,以保证研究成果达到国际领先水平。文章要主题明确,论据充分,层次分明,语言精练。观测、实验、统计数据应包括新近的资料。 (2) 来稿(包括图、表及英文摘要)一般不超过10个版面(10 000字)。稿件请用WORD文件,论文格式请参照本刊最新期刊格式。 (3) 内容摘要100~200字左右, 关键词3 ~ 7 个,包括:研究专业、研究要素、研究方法、研究地区。 (4) 论文的1、2、3级标题分别按1,,编号,各级标题一律左起顶格书写。 (5) 凡属国家、省部级以上科学基金资助项目和重点攻关课题项目的研究论文请在首页脚注中注明基金的中英文名称和编号。 (6) 文稿中计量单位一律使用国家法定计量单位,用标准符号表示。如“m”,“t”等。各种专业术语一律按已颁的标准使用。同一名词术语、计量单位、人名、地名等要求全文统一。 (7) 表格格式为三线格 (在Word软件中选:表格-插入表格-自动套用格式-简明1)。表格标题为中英对照,在表格上居中。 (8) 插图一般不超过5幅,凡涉及国界线的图件,请按地图出版社最新标准底图绘制,有审图证明的亦可。插图标题为中英对照。在插图下居中。 (9) 参考文献 只列文中引用的、公开发表的文献(未公开出版的用脚注说明),按文中出现的先后顺序编号(引用之处在右上角标注编号)。引用他人的资料和数据要认真核对,注明出处。英文文献中作者姓在前,名在后。 如J. C. Smith 文献著录为 Smith, J. C. 为便于国际检索机构和读者查阅,中文和非英文参考文献应译成英文。(先英文,后其他语种文。)排列顺序为:1) 专著: 作者(列前3名). 书名. 版次(首版不录). 出版地: 出版社, 出版年. 起止页码.2) 文集: 作者(列前3名). 文题. 见(In): 编著者. 书名. 出版地: 出版社, 出版年. 起止页码.3) 期刊: 作者(列前3名). 论文名. 刊名, 出版年, 卷(期): 起止页码. (10) 英文摘要篇幅为半页,其中应有简要的研究方法、关键的观测、实验、统计数据和基本观点。 (11) 来稿发表与否,由本刊编委会最后审定。本刊印刷版由中国科学杂志社出版,国内外公开发行;光盘版由中国学术期刊(光盘版)电子杂志社制作;网络版由万方数据网络中心和中国知网发布。来稿一经采用,将以三种版面形式刊载。稿酬在论文采用后一次付清。请勿一稿多投。稿件若不被采用,本刊将通知作者。来稿一律不退,请作者自留底稿。 (12) 为保证审稿的公正性,本刊采取国际惯用的盲审制。 (13) 为便于联系,请作者来稿时将姓名、单位、城市、邮编、E-mail地址和电话号码附上。来稿一律通过电子邮件传送: 自然地理、环境科学、遥感与GIS在自然环境中应用稿件传送到: , 电话:经济地理、土地利用、遥感与GIS在经济地理中应用稿件传送到:, 电话:编辑部收到稿件后会给作者回信。 《地理学报》编辑部
你是文科还是理科的呢 我也想学地理学 但是不晓得以后能做什么 请赐教 374228520我的QQ
软件学报期刊级别为北大核心期刊,出刊周期为月刊,期刊创办于1990年。软件学报由中国科学院软件研究所与中国计算机学会主办,中国科学院主管,是一本刊登计算机软件各领域原创性研究成果的期刊。《软件学报》致力于创办与世界计算机科学和软件技术发展同步的以中文为主的“中文国际软件学术期刊”,为全球华人同行提供学术交流平台。
软件学报期刊级别为北大核心期刊,出刊周期为月刊,期刊创办于1990年。软件学报由中国科学院软件研究所与中国计算机学会主办,中国科学院主管,是一本刊登计算机软件各领域原创性研究成果的期刊。《软件学报》致力于创办与世界计算机科学和软件技术发展同步的以中文为主的“中文国际软件学术期刊”,为全球华人同行提供学术交流平台。
一般杂志都是二审,即一般编辑负责初审,初审通过的稿子上交主编审核,主编为二审,也叫终审,终审通过才能刊登。但我也遇到过三审的杂志,一审是编辑,二审是主任或主编,还有三审的出版社。杂志的话,加在一起大概一个月吧。如果你投稿在截稿期之前,那会很快,两个星期。
软件学报是三大学报之一,权威性最高,难度大,审稿漫长模式识别与人工智能好投一点
一般不会太难,如果需要可以HI我
软件学报是很难投的,审稿时间长,难度大,是EI核心来源期刊; 可接受8000-10000字左右的长文; 稿量大,处理流程大多缓慢,应早投; 《投稿方式:直接网站在线投稿,中英文均可。初审后通知编号,邮寄审理费。外审通过后再通知其它处理事宜。 审理费:150元 审稿周期:6个月左右;发表周期:录用后的发表周期较长,需要耐心等待,但专刊较快. 版面费标准:元/面,收费比较厚道。该刊组织了很多专刊,投专刊的文章被录用后发表周期相对短,但录用率超低专刊反映信息较快,是一种不错的方式。 《模式识别与人工智能》比前者好中一些,但难度也不小。这个杂志是要求你寄两份打印稿,还有一份你的联系信息,然后大概一个星期左右他给你发email告知你通过初审,要求给审稿费100元,然后就是等待,大概三个多月给结果吧。每期文章大约20几篇,平均来说不是很好中,审稿一般4个月左右,发表周期就长了。
之后要再次盲审。
另外省市级教委会随机抽取一定比例的论文请外单位做盲审,以检查研究生培养的质量。所有博士硕士论文在盲审、外审都过了才能参加答辩,然后由答辩委员会决定是否通过答辩。
盲审和外审通后过才能取得答辩权,答辩不通过,一样不能毕业。只要盲审2个专家通过,或者外审的2个专家通过就取得答辩权利,答辩委员会不包括外审专家,要半数通过就能够毕业。
博士和硕士都有不能毕业的,但是硕士的比例很小的,也有没有毕业的硕士,但是比例不到1%。所有的博士论文和部分硕士论文在答辩前由学位办送到外单位做盲审,以保证答辩论文的质量。
盲审相对来说比较难,这是由学校统一往出送,多送到外省,隐去姓名和导师姓名,你不知道你的论文被送到哪里,那边老师也不知道这论文来自哪里是谁的学生,所以盲审相对比较客观,大约需一个半月左右。外审多是由院系自己往出送,虽然也是隐去学生姓名和导师姓名的,但多送到省内关系较好的兄弟院校,所以相对来说没有盲审那么严的,这个大约需一个月到一个半月左右。
扩展资料:
盲审是指一种组织专家组评审的制度,就是匿名送审,意味着评阅导师不知道论文作者是谁。这样打出来的分数作假率低,高校阅卷一般使用这个方法。盲审制度,就是将不署作者名的学位论文送给作者不可能知道的专家审核,这样打出来的分数,应是最为客观。一般高校,特别是研究生院,均有对学位论文进行定期盲审的相关规定,多为随机抽取一定数目的论文进行盲审。
外审是指将论文送外单位专家审阅,有的学校是学位办统一进行,有的学校是导师个人进行。自己导师指定的审论文专家,自己送审,占90%,由于专家和导师关系一般不错,都能通过。
参考资料:百度百科-盲审外审
学位论文拟采用网上盲审的形式进行外审。
匿名评审论文PDF格式电子稿中封皮、英文摘要、正文、致谢等所有内容中的导师和个人姓名都要以空格表示。
为严把论文质量关,体现公平公正原则,论文外审采取全盲送审的方式进行。全体申请学位研究生需提交匿名评审论文,学院汇总后报送至研究生处。
关于论文原始数据审查
根据毕业论文类型不同,文献研究型论文原始数据主要包括校注整理原则、版本目录等调研资料、文献数据采集表、引用书目、古籍原文复印件或书影、各类调研表及统计分析表、研究日志等;临床研究型论文原始数据主要包括研究场所。
研究时间、研究对象的选择(诊断、纳入、排除标准)、研究方案、检测指标、涉及的仪器试剂、每个研究对象的观察检测指标记录表、化验单、疗效评定标准、各类统计分析表、研究日志等。
实验研究型论文原始数据主要包括实验方案、实验材料、受试样品和对照样品的选择,仪器名称型号操作方法、试剂生产厂家种类用量、动物造模方法、药品制备步骤、提取工艺方法步骤、各类检测图谱、数据统计分析量表、实验日志等。
通常会送给两个以上的导师来评阅,一般是会屏蔽自己的导师导师的评审结果一般是1、同意答辩2、稍作修改同意答辩3、修改,答辩再议当所有导师都选1的话,可以直接进入答辩环节当有一个导师选择了2,且没有导师选择3的时候,给你打回论文让你按要求修改,然后进入答辩环节当有一个导师选择了3的时候,你的论文就算是盲审未通过了,需要推迟答辩,修改后是否能获得答辩资格还得看二次盲审的结果盲审意见一定要认真对待,让你改的话也是重点按照他们的意见改,因为你最后答辩时,一定至少有一个你论文的盲审导师,他肯定会仔细询问他所提出的那些意见你是否都改善了,而最关键的是,在你答辩通过之前,你都不知道这个盲审导师是谁。
杂志样刊和正刊区别为发行方式不同、录用方式不同和发行时间不同。
一、发行方式不同
杂志样刊:一般都只会打印两三本,然后在更改,看看效果如何,再次修改。等全改好之后,就是现在所见的杂志了。
正刊:文章被正式评审录用,不用反复修改观看效果,然后排队发表。
二、录用方式不同
杂志样刊:杂志样刊都是经过反复更改之后,反复订正,最后才被录用的。
正刊:正刊是正式被评审录用,不用反复的修改。
三、发行时间不同
杂志样刊:杂志样刊需要多重筛选,所以时间相比较长。
正刊:正刊都是审核通过的,所以发行时间相对较短。
实时流体模拟是计算机图形学中的另一个热点问题.为了真实地描述流动现象,许多研究者不得不求解复杂的运动方程,如纳维-斯托克斯方程组(Navier-Stokes equations,简称NSEs).然而,NSEs的求解相当耗时,对时间步长极为敏感,易导致结果发散.直到几年前,Stam[4]在计算机图形学领域中引入半拉格朗日算法,才使得实时流体计算成为可能.该方法允许采用较大的时间步长,同时保持良好的稳定性.虽然这种方法的计算精度不能满足工程上的应用,但能捕获流体运动的基本特征,满足很好的视觉效果.所以,计算机图形学界逐渐开始广泛应用该方法来模拟流动现象[5 9].为了更进一步加速求解,人们开始利用GPU的并行性和可编程性来求解偏微分方程(partial differential equations,简称PDEs)[10 13].但是,由于目前GPU上缺乏像CPU那样的灵活性,编程也不如在CPU上那样容易,所以大多数研究者只是集中在二维问题域.而且,对于边界条件的处理过于简单,以至于很难满足实际问题的需要. 本文的贡献在于:在GPU上采用半拉格朗日方法来求解三维NSEs,且保证GPU能够处理任意复杂的边界条件,整个计算与场景的几何复杂度无关.对于中等规模的问题,整个模拟和显示能够实时进行,充分利用了GPU的并行性以加速计算. 为了能够处理任意障碍物形成的复杂边界,我们结合模板缓冲对三维场景进行剪切操作,形成一系列实心的剖切截面,以构成整个流动边界.我们将整个三维计算域离散成一组切片,并将这组切片平铺到一个二维空间,所以这组切面也被组织成一幅二维纹理.这样,通过将障碍物信息转化到图像空间,使得整个流体计算与场景几何复杂度无关.我们根据障碍物的位置信息将体素划分为不同的类型,并利用像素程序生成偏移坐标,然后在偏移坐标的基础上,根据边界条件形成边界修改因子,从而使得该方法能够处理任意的内部边界条件,比文献[11]的方法更为通用.另外,为了充分利用像素处理的并行性,我们将相似的变量组织在一起,压缩到纹元的4个颜色通道,以减少绘制的次数,达到性能提升的目的.而在绘制方面,由于流体为半透明的物质,所以本文采用光线投射的思路,直接在GPU上利用像素程序进行积分运算计算出光的衰减,然后通过基于GPU的颜色融合以获得着色效果. 1 相关工作 为了模拟烟雾中的湍流现象,文献[14]采用分解的方法将湍流风场分成确定分量和随机分量两部分.其中,确定分量用来模拟风场的大尺度行为,采用几种常见的风的形态进行叠加,而随机分量则采用Kolmogorov频谱来模拟小尺度行为.为了更精确地描述流体的运动,Foster等人[15]采用直接数值模拟来求解流体方程,用以模拟水面形态以及漂浮物体的运动.但由于这种方法采用显式格式,要求时间步长很小,否则整个计算不收敛.为了在保证计算稳定的情况下能够获取较大的时间步长,Stam[4]采用半拉格朗日法来求解NSEs.但半拉格朗日方法的数值耗散很严重,因此,在文献[6]中引入一个漩涡约束因子(vorticity confinement)以弥补耗散,从而得到很好的烟雾视觉效果.文献[5,7]采用该方法来求解level-set方程以模拟复杂流体表面.在模拟火焰的过程中,文献[9]对于气态燃料和气态生成物分别采用了类似的处理方法.同样,文献[8]中为了模拟大尺度烟的效果,在二维平面570 Journal of Software 软件学报 , , March 2006 上采用半拉格朗日法来求解NSEs,三维上尺度上则只采用Kolmogorov频谱来增加细节. 随着GPU的发展,特别是可编程性和实时绘制语言的普及,很多人利用GPU提供的并行性,将它作为流处理器来做一些通用计算方面的工作,甚至用来求解有限差分方程组.2001年,Rumpf等人[16]利用图形硬件提供的多纹理操作和图像子集函数来求解传热和各向异性扩散有限单元方程,以实现图像处理的功能.2002年,文献[17]采用LBM(lattice Boltzmann method)来模拟流动效果.通过将粒子包合成纹理,将Boltzmann方程组映射到光栅化和帧缓冲操作上,采用Register Combiner实现整个计算.Harris等人[18]通过Register Combiner结合Texture Shader来求解CML(coupled map lattice)问题,从而实现交互的对流扩散模拟. 从2003年开始,Krüger等人[13]利用像素编程,在基本代数运算的基础上实现了共轭梯度法和高斯-赛德尔迭代法,从而更进一步地求解2D波动方程和不可压NSEs;Bolz等人[10]则实现了基于像素编程的稀疏非结构化矩阵的共轭梯度法和多重网格法,以求解流体运动方程;Goodnight等人[12]在GPU上应用多重网格算法求解边界值问题;Harris等人[11]则基于像素程序对云彩的运动方程进行求解来得到动画效果;文献[19]给出了一个采用Cg实现的流体简单效果的模拟;Batty等人[20]在GPU采用共轭梯度法来模拟流体运动. 2 基于GPU的三维流动模拟 为了模拟流动现象,计算流体力学领域(CFD)的众多研究者已经做了大量的工作.但在计算机图形学领域,目前主要是针对不可压的无粘低速流动现象模拟,以满足电影特效或者游戏特效的需要,如烟,火,云彩,流水等[5 9,11].这里也只是针对不可压的无粘低速流动现象而言. 流体运动方程 整个流体运动方程主要由两部分构成:一是连续性方程;另一个是动量方程. 0u =r(1) rfpuvuuturrrr+ + = 2)(/ (2) r这里,为速度矢量,v为动力粘性系数,urf为外部施加的作用力,p为压强. 为了表现流动效果,引入密度ρ和温度T两个标量.本文不仅考虑其自身的扩散效果,也考虑计算速度场所带来的对流效应. 2()tukSρρρρ = + +rρ (3) 2()TTtuTkTST = + +r(4) 为了能快速模拟,我们采用半拉格朗日算法求解上述方程.更多关于半拉格朗日算法的细节可以参考文献[4].整个计算与我们在二维问题上的计算方法[28]类似. 由于温度和密度会导致速度发生变化,所以将其影响以浮力的形式[6,8,9,28]传递给速度场. yTTyfambbuoyrrr)( + =βαρ (5) 这里,为向上的矢量方向,即(0,1,0),Tyramb为周围环境的温度,α和β分别用来控制密度和温度的影响程度. 为了密度半拉格朗日方法的数值耗散,我们引入漩涡约束因子来增加流动的细节,以外力的形式传递给速 度场(conffhn)εω=×rrr.这里,uω= ×rr,||/|||n|ωω= rrr,ε用来控制加入到流场中细小尺度细节的量,h为空间 步长,以确保加入的漩涡约束是合理的. 计算纹理准备 为了加速偏微分方程组的求解,我们将整个计算映射到GPU上来完成.文献[20]将拉普拉斯算子重新组织成7幅纹理.与其不同的是,我们直接将整个计算域组织成纹理[11],利用像素程序在pbuffer中计算整个NSEs. 在离散整个三维计算域的时候,首先确定出需要计算的整个场景的包围盒.如图1(a)所示,沿某根坐标轴对整个包围盒切片操作,每个切片为一个二维数组,即二维纹理,这样,每个体素就代表一个节点.为了计算方便,我们采用两套网格来表示主要变量,包括速度,密度和温度.这样,通过时刻t的状态量,计算出时刻t+1的状态量,柳有权 等:基于GPU带有复杂边界的三维实时流体模拟 571 然后交换.由于在压强泊松方程和扩散方程的计算过程中需要迭代计算,而在GPU上,像素程序对纹理不能同时进行读写操作,所以迭代方法受到很大的限制,目前有雅可比迭代法[11],共轭梯度法[10,13,20]以及红黑高斯-赛德尔法[11,12].在本文中只要求满足视觉效果,所以只需设定固定的迭代次数,而没有像文献[12]那样迭代直至收敛.如果需要,我们可以类似地采用硬件支持的occlusion query特征来进行收敛条件的判断.共轭梯度法需要进行矢量削减[10,13]的运算,需将数据从GPU返回给主内存,所以虽然该法整体收敛快,但单次迭代的效率不如雅可比迭代法;而红黑高斯-赛德尔法也需要两遍绘制才能完成一次迭代.故此,我们仍然选择雅可比迭代法.该方法不仅更简单,而且单次迭代的效率较高[3]. 尽管我们可以像以前的方法[22]那样将某个标量和速度变量(3个分量)压缩到纹元的RGBA这4个颜色通道以减少绘制的次数,但由于目前在我们使用的硬件上,像素程序尚只支持一个输出,所以当要求的变量多出4个时,不可避免地需要较多的绘制操作来完成整个变量的求解.但即使这样,我们仍可将密度和温度变量的求解压缩到一起,以减少绘制的次数.这样,我们首先计算整个速度场,然后再计算标量,最后利用密度场和温度场用来绘制流动的效果[6]. 由于整个计算域是三维的,而GPU对于三维纹理的读写操作很慢,如果采用一系列二维切片的方式,则对应一个切片就需要一遍绘制过程,这样,需要多遍绘制才能完成整个计算域的一次迭代计算.为了避免性能的损失,尽可能地减少状态量的改变和绘制句柄的反复切换,我们采用与Harris等人[11]类似的方法,即将整个三维的计算域平铺到一个二维域上,如图1(b)所示.但与文献[11]方法不同的是,我们预计算一幅二维索引纹理包含该切片的前后两个切片的位置,而不是一个简单的一维查找表纹理,这样,避免在像素程序中重新对每一个像素点进行定位计算,提高了整个模拟的运算效率. (a) 3D texture (b) Flat 3D texture (a) 三维纹理 (b) 平铺二维纹理 Flat 3D texture 图1 平铺三维纹理yzx 边界生成 对于实际问题而言,任意边界条件的处理至关重要.边界条件的不同使得各个问题不同,也才能体现出丰富多彩的流动效果.对于三维问题域来说,尽管我们可以像文献[23]那样在CPU上很容易地实现边界条件的处理,但那样每迭代一次,我们就需要将数据从GPU通过AGP通道读回到主内存进行边界处理,而这个过程很耗时,而且不得不在CPU上进行边界的判断以确定每个体素是否被障碍物占据,这无疑也十分耗时.由于主要计算是在GPU上进行的,所以希望边界条件的处理同样在GPU上完成.但目前GPU远不如CPU的操作灵活,为此我们提出一种新的方法,将所有的计算包括边界处理都放在GPU上完成,保证了整个计算的效率. 目前,我们使用的GPU上像素程序尚不支持分支和循环操作.所以,我们预先在图像空间生成边界障碍物图像,用这个障碍物图像来生成每个体素的偏移纹理;然后,根据边界条件生成主要变量(如速度,压强等)的修正因子.这里,采用两个像素程序就可以完成整个初始化的过程,这样就在GPU上完成了边界条件的处理,避免了GPU和CPU之间的频繁通信,加速了整个计算过程.图2给出了整个初始化的过程,在第节中将详细展开. 572 Journal of Software 软件学报 , , March 2006 Boundaries3D ScenePosition offsets(c)(b)(a)Actual offsets(d)Velocity factor(e) The whole initialization procedure 图2 初始化过程 文献[24]采用深度剥离的方式来体素化整个场景,以生成LBM的动态边界.与此方法不同,我们采用直接体素化的方式,就是将整个场景不断剖切,然后正交投影,在图像空间形成障碍物图.但由于整个场景由几何面片构成,单纯的剖切操作会出现一些空洞的区域,如图3(b)所示.为了形成实心的剖切截面,我们结合模板缓冲进行剪切,以得到正确的障碍物信息图.由于已将三维计算域转换到二维空间,所以在形成边界图的时候,我们同样将这些边界图组织成一幅纹理集,如图3(c)所示.可以参见文献[25]了解形成实心剖切截面的具体实现过程. (a) The solid model (b) The texture chart with just clipping (c) The capping clipped texture chart (a) 原始几何场景 (b) 单纯剪切操作得到的障碍物纹理图 (c) 实心剖切截面纹理图 Boundary generation with 16 slices along z-axis 图3 边界生成,沿z轴作16次切片 边界条件处理 在得到边界纹理以后,我们就可以根据边界条件对边界上的变量进行修正.任意复杂边界条件的处理对于实际问题的求解至关重要.这个问题在CPU上很容易解决,因为CPU提供了灵活的控制机制,但GPU为了保持高度的并行性而缺乏灵活的控制,所以不得不另辟蹊径.这里提供的方法可以处理任意复杂的边界,并且可以处理用户的任意交互输入的障碍物边界.为了能够适应一般的边界,文献[12]利用模版缓冲将边界值作为状态量模拟的一个扩充.与其不同的是,我们借鉴Foster等人对边界的处理方法[15]对边界进行分类,从而较文献[12]更为灵活,与Harris的方法[11]有些类似.但Harris的方法只能处理四周边界,我们的方法则可以处理任意复杂的内部边界. 通常情况下,边界条件可以分为3类,即Dirichlet边界,Neumann边界和混合型边界,但都可以统一到一个方程: abncφφ+ =r(6) 这里,φ指的是速度,密度,温度和压强等,a,b和c分别代表一定的系数.首先,根据障碍物纹理图将体素划分为障碍物和流体两类(如图3(c)所示),用0或1表示.对于边界条件方程(6)的作用,我们采用一阶精度离散化,这样,边界上节点的值就由其周围的某一个节点来决定.由于方程(6)对法线方向求偏导数,为了在GPU上求解方便,柳有权 等:基于GPU带有复杂边界的三维实时流体模拟 573 我们将任意法线方向简化为28个方向,所以采用式(7)编码的方法只需对每个节点周围的7个节点进行考察就可以求出该节点的类型,从而得出相对方位关系,如图4所示.这样,边界条件就转化为φboundary=dφoffset+e,d和e由方程(6)的具体离散情况来决定,即表示为修正因子纹理. (7) 32)1,,(16)1,,(4),1,(8),1,(2),,1(),,1(64),,(),,('× +×++× +×++× +++×=kjiObstaclekjiObstaclekjiObstaclekjiObstaclekjiObstaclekjiObstaclekjiObstaclekjisTypeNode这里,Obstacle(i,j)即1(被流体占据的节点)或者0(被障碍物占据的节点).由于计算在图像空间进行,所以一旦得到障碍物信息,整个计算就与场景的几何复杂度无关了. Node types yx Relative orientation of voxels 图4 各个体素的相对方位关系 表1给出了整个编码运算的过程与结果.这样,我们将编码的64个结果组织成28个方向,存储到位置偏移纹理中(如图2(c)所示).然后,根据该偏移纹理,结合索引纹理,生成在二维平铺纹理空间的真实偏移(如图2(d)所示).同时,根据边界条件计算出速度修正因子纹理(如图2(e)所示).该过程只需两个像素程序即可完成. Table 1 Code results 表1 编码运算的过程与结果 Relative orientation Binary coding 3D offset Actual offset Velocity modification factor Right 000001 (1,0,0) (1,0) (0, 1, 1) Left 000010 ( 1,0,0) ( 1,0) (0, 1, 1) Bottom 000100 (0, 1,0) (0, 1) ( 1,0, 1) Top 001000 (0,1,0) (0,1) ( 1,0, 1) Front 010000 (0,0,1) (Toffset x,Toffset y) ( 1, 1,0) Back 100000 (0,0, 1) (Toffset z,Toffset w) ( 1, 1,0) Bottom-Right 000101 (1, 1,0) (1, 1) (0,0, 1) Top-Right 001001 (1,1,0) (1,1) (0,0, 1) … … … … … 由于边界条件的处理涉及到速度,压强,密度和温度等变量,我们将为这些变量分别根据系数d和e形成修正因子.在目前的系统中,我们对压强采用Neumann边界条件,即0pn =r.这样,边界上的值等于其相邻节点上的值,所以压强的修正因子一直是1.对于静态的障碍物,我们认为垂直于其表面的节点速度对应分量等于0;而对于非滑移边界,由于障碍物对流体有拖曳力的作用,将边界上的切向速度赋为附近流体节点上对应分量的负数;对于滑移边界,边界上的切向速度则直接赋为附近流体节点上对应分量.这样,根据边界类型既可动态地计算偏移位置,也可以预先计算好,对于当前处于边界上的值,根据偏移位置取出对应的值,结合d和e进行滑移或者非滑移处理后赋予它.对于流体本身和障碍物内部,其纹理偏移均为(0,0,0),即该边界处理的像素程序不改变其节点上的数值.在本文中,我们对速度变量只考虑了非滑移边界条件,通过速度修正因子纹理来体现(如图2(e)所示).这样,我们通过两个不同的像素程序分别处理压强和速度边界条件.这些在二维域更容易理解,可以参阅我们以前的工作[22].对于标量(密度和温度)的边界处理将更为简单,我们直接指定边界上的值等于障碍物的574 Journal of Software 软件学报 , , March 2006 对应值. 显然,这种思路同样可以处理周期性边界条件.不过,需要修改一端的偏移位置指向整个计算域的另一端.这种方法还可以进一步推广到动态边界,如模拟运动物体对流体造成的影响,只不过我们需要不断更新坐标偏移纹理和修正因子纹理. 通过以上方法,结合平铺三维纹理的方式,整个计算化为二维问题.整个流体计算完全在GPU中实现,模拟过程高效.在目前的系统中,我们尚只求解了静态场景,但该方法本身对于动态场景仍是适用的. 3 结果与讨论 本文所采用的实验平台为Intel Pentium ,主内存为2G,显卡采用的是GeForce FX5950 Ultra,显卡内存为256M,显卡的核心频率为375MHz,驱动的版本为,操作系统为Windows 2000.整个实现基于OpenGL.这里给出了一些实验结果,这些结果显示了本文所提出的方法的有效性和高效性.在图形硬件上,我们不仅完成了整个基于物理的流体方程求解,同时也将计算的结果实时绘制出来. 图5给出了气流在迷宫中流动的场景,图6给出了气流在一个城市中流动的情形,充分体现了本文算法处理复杂边界的能力,从而可以用来实时模拟诸如有害气体泄漏,火灾等事故.更多的演示动画可以访问http://lcs. . Flowing in a maze Flowing in a city 图5 气流在迷宫中流动的场景 图6 城市中气体流动情形 目前,我们只是在pbuffer中使用复制到纹理这种思路,所以在性能上还有提升的空间.如果采用绘制到纹理,可以得到更好的性能.但这时存在的一个问题是,整个计算需要多个pbuffer句柄的不断切换,这样使得其整体性能并不比采用一个pbuffer然后使用复制到纹理这种思路高效.为了避免这个问题,就需要使用pbuffer的多个表面[12,21]作为绘制对象,而这个问题目前各个硬件支持的情况不太一样. 在我们的实验中,整个花费的时间由4部分构成.在静态场景中,边界生成和边界条件的准备只需要做1次.这样在实时模拟过程中,我们只需要求解流体方程,然后绘制出整个效果,其中流体方程的求解占用了整个时间耗费的绝大部分.无疑,模拟耗费的时间与绘制的遍数成一个简单线性正比的关系,如果我们设定固定的迭代次数为N,并考虑扩散对流,浮力,漩涡约束等所有因素,则总绘制遍数等于11+6N.当然,迭代次数越高,整个计算越精确.图5中计算域的分辨率为64×34×16,N=6,绘制尺寸为512×512,模拟效率大概为.通过实验可以看到,在计算流体运动方程中,GPU相对于CPU而言性能要高出很多.虽然GPU在编程上比较复杂,而且不如CPU那样灵活,但它提供的可编程性使得人们能够根据方程本身的特点来设计算法,以充分利用GPU的并行特性来加速,从而有效地实现快速求解. 4 结论与讨论 本文利用目前新的图形硬件求解流体的运动方程,从而达到实时模拟的效果,将方程的求解与绘制整合在一起,减小了CPU处理的压力,让CPU解放出来做其他事情.在求解过程中,为了更进一步加速整个计算过程,柳有权 等:基于GPU带有复杂边界的三维实时流体模拟 575 我们将多个标量压缩在一起,以减少绘制的次数.另外,对于复杂边界的处理更加通用化,通过将整个几何场景转化到图像空间,使得算法与几何场景的复杂度无关.在图像空间修正边界值,使得整个算法更加实用化,能够模拟出各种复杂的流动.可以看出,图形硬件对于整个计算的加速是很明显的. 但目前利用GPU来求解流体运动方程仍存在很多限制:首先,该方法不太适合像文献[8]那样的大规模问题求解,内存有限,而且存在最大纹理尺寸的限制,使得所需求解的问题分辨率不能太高,不过这个问题可以通过纹理压缩或者多遍的方法得到缓解;而灵活性的缺乏以及指令集的局限性使得GPU编程的复杂度增加,而且难以实现一些运算,如位操作等.另外,由于整个计算基于像素,所以瓶颈亦在于此.通常情况下,高效的计算应该是寻求在CPU,AGP通道,顶点级以及像素级这几者之间达到一个很好的均衡.文献[21]为我们提供了一个很好的思路,即利用GPU与CPU之间的消息机制来维持整个计算的负载均衡.更多关于GPU的讨论可以参考文献[3,26]. 目前,整个算法完全基于汇编来实现,而高级实时绘制语言,如Cg应该有助于编写更高效的代码.所以在将来的工作中,我们准备将现有的工作转到Cg上去.另外,由于半拉格朗日方法的精度不够高,使其在计算流体力学领域的应用很受限制,而多重网格法[12]从某种程度上可以提高整个计算的精度,从而满足工程应用的要求.需要进一步完成的工作还包括烟雾或者火焰本身的高度真实感绘制等. 随着新的硬件特性的不断出现,如nVidia和ATI公司的Frame Buffer Object(FBO)和Render Buffer Object(RBO) [27],它们将完全代替pbuffer,从而将更方便我们利用GPU并行处理的能力.基于此,我们还将设计一些更为精巧的算法来加速PDEs的计算并增强绘制效果.
样刊: 一般只会打印两三本,再修改,看看效果等。等全改好在打印的就是普通卖出的杂志了。正刊: 这个就是文章被正式评审录用,然后排队发表的。根正苗红,当然没有问题。