数值模拟实验一
- 格式:doc
- 大小:596.55 KB
- 文档页数:18
物理实验技术中的数值模拟方法与技巧在物理实验中,数值模拟是一种非常重要的工具,它可以帮助实验人员更好地理解实验现象、验证理论模型以及优化实验方案。
本文将介绍物理实验技术中常用的数值模拟方法与技巧,希望能够对物理实验研究者有所启发和帮助。
一、数值模拟方法的选择在进行物理实验的数值模拟时,选择合适的数值模拟方法是至关重要的。
常用的数值模拟方法包括有限元法、有限差分法、蒙特卡洛方法等。
对于不同的实验问题,需要根据具体情况选择适合的数值模拟方法。
以有限元法为例,它适用于解决复杂几何形状和边界条件下的物理问题。
在实验人员进行物体的结构研究时,有限元法可以帮助求解物体的应力、变形等参数。
因为几何形状和边界条件的复杂性,解析方法往往难以直接求解,而有限元法则可以通过将整个问题划分为很多个小单元,从而近似求解。
而在研究物体的流动行为时,有限差分法则是一种常用的数值模拟方法。
通过将空间离散化,时间离散化,将连续的偏微分方程转化为离散的差分方程,可以模拟物体的流动行为。
在实验人员研究小尺度流动、多相流、湍流等问题时,有限差分法可以提供一种较为便捷的数值模拟方法。
二、数值模拟技巧的应用在进行物理实验的数值模拟时,除了选择合适的数值模拟方法外,还需要掌握一些数值模拟技巧,从而提高数值模拟的准确性和效率。
首先,合理地选择网格大小是数值模拟中的重要技巧之一。
网格大小的选择直接影响到模拟结果的准确性和计算效率。
若网格过于粗糙,会导致模拟结果的偏离;若网格过于细致,会增加计算量。
因此,实验人员需要在准确性和计算效率之间进行权衡,选择适当的网格大小。
其次,合理地选择边界条件也是数值模拟中的关键技巧。
边界条件是模拟问题中的重要约束条件,对模拟结果有着重要影响。
实验人员需要根据物理实验的具体设置,将实验问题转化为数值模拟问题,并选择适当的边界条件进行模拟。
合理的边界条件可以更好地反映实验现象,提高数值模拟的准确性。
最后,灵活地利用数值模拟软件也是一项重要技巧。
开槽阳极对铝电解槽中气泡运动影响的数值
模拟
开槽阳极是铝电解槽中的一种重要组件,直接影响着气泡在电解
槽中的运动。
为了研究开槽阳极对铝电解槽中气泡运动的影响,我们
进行了数值模拟实验。
通过这一实验,我们得到了一些有关气泡运动
的重要结果,对于进一步优化电解槽操作具有重要的指导意义。
首先,我们模拟了没有开槽阳极的情况下的气泡运动情况。
在这
种情况下,气泡的运动是较为混乱的,容易聚集在电解槽中的某些区域,从而影响到电解槽的效率。
这种情况下,电解槽中的气泡分布不
均匀,导致铝的电解过程不稳定。
接下来,我们模拟了有开槽阳极的情况。
开槽阳极将电流从整个
阳极均匀引导出来,使得电解槽中的气泡运动变得有序。
由于开槽阳
极的存在,气泡被有效地推动,从而避免了气泡在电解槽中的聚集现象,提高了铝的电解效率。
同时,通过对开槽阳极的设计和位置优化,我们还可以进一步调节气泡运动的速度和方向,进一步提高电解槽的
效果。
通过数值模拟实验,我们还发现开槽阳极的尺寸和形状对气泡运
动的影响也十分重要。
较大尺寸的开槽阳极能够提供更多的通气孔,
使得气泡的释放更加顺畅,减小气泡在电解槽中的滞留时间。
同时,
我们还发现特定形状的开槽阳极能够改变气泡运动方向,进一步优化
电解槽的效果。
综上所述,开槽阳极对铝电解槽中气泡运动的影响是显著的。
合理设计和布置开槽阳极可以有效地调节气泡运动的速度和方向,避免气泡在电解槽中的聚集现象,提高铝的电解效率。
因此,在铝电解槽的设计和操作过程中,必须充分考虑开槽阳极的影响,以达到最佳的电解效果。
实验中的常用数值模拟与仿真技术实验是科学研究和工程技术发展中不可缺少的一个环节。
然而,实验过程中会涉及到复杂的系统和高风险的操作,因此引入数值模拟与仿真技术成为了非常必要的手段。
本文将介绍实验中的常用数值模拟与仿真技术,并探讨其在实验设计、数据分析和结果验证等方面的应用。
一、实验中的数值模拟技术在实验设计阶段,数值模拟技术可以模拟研究对象的特性和行为,提前评估实验方案的可行性,并根据模拟结果对实验进行优化。
常用的数值模拟技术包括有限元分析、计算流体力学、多体动力学等。
有限元分析是一种通过将连续物体分割成有限个小单元,对每个小单元进行力学分析,最终得到整个物体的受力、变形情况的数值计算方法。
在实验设计中,有限元分析可以用来评估物体在实验过程中的变形情况、力学行为,辅助选择合适的实验参数和仪器设置,优化实验方案的设计。
计算流体力学是一种通过对流体流动进行数值模拟的方法。
在实验设计中,计算流体力学可以模拟流体在管道、泵站等系统中的流动情况,预测流体压力、速度等参数,为实验参数的选择和实验过程中的控制提供依据。
多体动力学是一种研究多个物体相互作用力和其运动规律的数值模拟方法。
在实验设计中,多体动力学可以模拟实验中物体之间的相互作用力,预测物体的运动轨迹,帮助评估实验设备的安全性和减少设备损坏的风险。
二、实验中的仿真技术仿真技术是利用计算机模型对实验进行模拟,并通过计算机对实验模型进行操作和观察。
仿真技术在实验前的预演、实验过程的辅助控制和数据采集、实验结果的验证等方面起到了关键的作用。
常用的仿真技术包括虚拟实验室、虚拟现实和混合现实等。
虚拟实验室是通过计算机模拟实验设备和环境,使实验者可以在虚拟的环境中进行实验。
在虚拟实验室中,实验者可以进行实验操作、观察实验结果,并实时调整实验参数,预先排除实验过程中的风险和误差。
虚拟现实是利用计算机生成的三维视景,通过虚拟现实设备使用户沉浸在虚拟环境中的一种技术。
在实验中,虚拟现实可以用来模拟实验场景,提供真实的视觉和触觉体验,增强实验的可视化效果和沉浸感。
《数值模拟技术》教学大纲课程编码:08241070课程名称:数值模拟技术英文名称:TECHNOLOGY OF NUMERCAL SIMULA TION开课学期:7学时/学分:36 / 1.5课程类型:专业课开课专业:工科专业本科生选用教材:实用工程数值模拟技术极其在ANSYS上的实践王国强西北工大出版社主要参考书:1.电脑辅助工程分析ANSYS使用指南陈精一中国铁道出版社20012. 结构力学与有限单元法高秀华吉林科学技术出版社19953.ANSYS相关资料执笔人:李风一、课程性质、目的与任务数值模拟技术课程是一门用以培养学生在机械设计中现代设计方法一个分枝在工程中应用的专业课,本课程主要研究工程结构的静动力学分析问题及相关领域的有限元分析问题, 。
通过数值模拟技术的学习,能够掌握标工程问题的有限元建模极其前后处理和求解方法,使学生具备一定的分析能力和初步的实践能力二、教学基本要求1.掌握有关有限元法的基本概念及基础理论;2.将ANSYS软件应用到简单的工程问题分析中;3.树立正确的设计思想,理论联系实际,具备创新精神;4.全面系统地了解数值模拟技术的基本知识;5.掌握数值模拟技术使用的一般流程,具有进行实验研究的初步能力;3.对计算结果具备一定的分析及判断能力;7.了解数值模拟技术的新理论,新方法及发展趋向;数值模拟技术课程是机械类专业一门专业课程。
在教学过程中要综合运用先修课程中所学到的有关知识与技能,结合各种实践教学环节,进行机械工程技术人员所需的基本训练,为学生进行毕业设计和有目的从事机械设计工作打下基础。
因此数值模拟技术课程在机械类专业的教学计划中占有重要的地位和作用。
三、各章节内容及学时分配第一章概述(2学时)第一节FEA与ANSYS第二节ANSYS基础第三节应力分析第四节初步决定第五节热分析第六节热-应力分析第七节几何模型的输入第八节实体模型第九节网格划分第二章有限元分析与ANSAS(2学时)第一节有限元分析的基本概念第二节ANSYS的功能第三节结构分析第四节热分析第五节流体分析第三章ANSYS的基本操作(2学时)第一节GUI图形方式第二节ANSYS的数据库和文件第三节ANSYS的在线帮助第四章线性分析(4学时)第一节分析步骤一、前处理二、求解三.后处理第二节几何建模第三节网格划分技术第四节施加载荷第五节计算结果及结果判断第六节例题第五章实模型建立技术(2学时)第一节几何模型的输入技术第二节实体模型的建立一.图元二.工作平面三.布尔运算四.关键点五.坐标系六.建模实例第六章有限元网格划分(4学时)第一节定义单元属性第二节网格的控制参数第三节网格的生成技术一、网格的映射二、网格的拖拉与扫掠三、过渡网格四、实例第六章数值模拟技术的参数化语言(4学时)第一节概述第二节定义参数第三节使用参数第四节从数据库中获取信息第五节数组参数第六节宏技术第七节分枝结构第八节循环结构第七章典型单元分析(6学时)第一节梁单元分析一、梁的属性二、梁的网格划分三、梁的加载求解及结果分析第二节平面问题的数值模拟分析一、平面应力问题二、平面应变问题三、典型平面单元的属性四、平面单元的网格划分五、平面问题的加载求解六、结果分析第三节空间实体典型单元分析一、实体单元的属性二、实体单元的网格划分三、空间实体问题的载荷四、空间实体问题的加载求解五、结果分析第四节模态分析一、模态分析的研究内容二、模型的建立三、模态分析的相关参数四、求解及后处理五、实例第八章实例(4学时)第一节平面桁架结构一.定义单元类型二、定义实常数三、定义材料性能参数四.建立集合模型五.有限元划分六.加载求解七.后处理第二节薄板静力学分析一、定义单元类型二、定义实常数三、定义材料性能参数四.建立集合模型五.网格划分六.加载求解七.后处理第三节单节箱形吊臂静力学分析第四节带孔薄板动力学分析一、定义单元类型二、定义实常数三、定义材料性能参数四.建立集合模型五.网格划分六.加载求解七.各阶振型分析四、实验1.实验目的与任务数值模拟技术课程的实验是验证性实验,其目的是使学生掌握数值模拟技术分析方法并能够理论联系实际地加以应用,任务是将课程所学的知识应用于实践,通过实际运行软件加深理论知识的掌握并提高解决分析问题的能力。
基于Mie散射理论测量微小球粒粒径的数值模拟及实验研究共3篇基于Mie散射理论测量微小球粒粒径的数值模拟及实验研究1基于Mie散射理论测量微小球粒粒径的数值模拟及实验研究摘要:本次实验通过基于Mie散射理论进行数值模拟和实验研究,对微小球粒粒径进行测量。
在数值模拟实验中,通过改变微小球的粒径大小,以及激光的波长及入射角度,得到了基于Mie散射理论的散射光强度分布曲线。
同时,在实验中探究了激光强度、探测器的接收角度等因素对于粒径测量结果的影响,结果表明,在合理选择激光波长和入射角度的情况下,通过Mie散射理论得出的微小球粒粒径测量结果是准确的。
关键词:Mie散射理论;微小球粒粒径;数值模拟;实验研究引言:微小球粒在生物医学、材料科学、燃气领域等领域中具有广泛的应用价值。
在许多工程应用中,微小球粒径大小的测量是十分重要的。
传统的粒径测量方法包括激光光散射、动态光散射等。
然而,这些方法测量精度较低,而且只适用于大颗粒粒径测量。
Mie散射理论则有着很好的粒径测量效果,可以测量小于100nm的微小颗粒粒径,而且测量精度高,其理论基础较为完善。
本文旨在对基于Mie散射理论测量微小球粒粒径的数值模拟及实验研究进行探究和总结,为相关领域的研究提供有力的实验支持。
一、基于Mie散射理论的数值模拟Mie散射理论是研究介质微小粒子与入射电磁波的相互作用的一种理论。
该理论可以描述散射光的角分布、强度分布和相位差等物理量,因此可以用于描述微小颗粒粒径的测量。
在数值模拟中,我们通过改变微小球的粒径大小、激光的波长和入射角度等参数,得出散射的光强度分布曲线。
图1 中展示了当微小球的粒径大小是100nm,激光波长为532nm时,所得到的散射的光强度分布曲线。
可以看出,在30度左右的入射角度处,光强度最大。
随着入射角度的增大和减小,光强度逐渐降低。
在选择合适的激光波长和入射角度的前提下,我们可以通过测量散射光强度来实现对微小颗粒粒径的测量。
哈尔滨工业大学《材料加工过程数值模拟基础》实验课程铸件充型凝固过程数值模拟实验报告姓名:学号:班级:材料科学与工程学院铸件充型凝固过程数值模拟实验报告实验一:铸件凝固过程数值模拟一、实验目的1.学习有限差分法温度场模拟的数学模型和基本思路;2.掌握用AnyCasting 铸造模拟软件进行温度场模拟的方法。
二、实验原理1.有限差分法温度场模拟的基本思路:设计铸造工艺方案→根据定解条件求解能量方程→揭示凝固行为细节→预测凝固缺陷→改进工艺方案,返回第二步循环。
2.有限差分法温度场模拟的数学模型:222222T T T T L C t x y z t三、铸件凝固模拟过程及参数设置1.凝固模拟过程铸件、浇冒口等三维实体造型(输出STL 文件)→网格剖分、纯凝固过程参数设置等前处理→凝固温度场和收缩缺陷计算模拟数据→后处理得到动态的液相凝固、铸件色温图和缩孔缺陷等文件。
2.参数设置铸件材质:AC1B铸型材质:SM20C初始条件:上下模500℃,侧模400℃,升液管700℃。
边界条件:所有界面与空气间的界面传热系数都为10W/(m 2∙K),熔融金属液与模具之间的界面传热系数为4000 W/(m 2∙K),各部分模具间和模具与升液管间界面传热系数都为5000 W/(m 2∙K)。
四、模拟结果图1 冷却时间由于模拟中设置了水冷和空冷条件,所以铸件冷却速度较快。
由图1可知凝固首先发生在铸件表面,铸件的轮辋区厚度较薄,冷却速度比轮辐处冷却快。
内浇口先于轮辐凝固,在内浇口凝固后升液管内铝合金熔液无法对轮毂进行补缩,则在轮毂中最后凝固处容易产生缩松缩孔。
图2 冷却率由冷却率分布情况可知凝固过程中各部分冷却速率不同,可以判断出凝固时内应力较大的区域,在应力较大区域铸件容易产生裂纹缺陷。
由模拟结果中铸件的温度场情况,合理设置工艺参数减少缩松缩孔及裂纹的产生,合理布置冷却水管的分布位置。
实验二:铸件充型过程数值模拟一、实验目的1.学习有限差分法流动场模拟的数学模型和基本思路;2.掌握用AnyCasting 铸造模拟软件进行流动场模拟的方法。
计算机数值模拟实验报告篇一:数值模拟实验报告一、实验题目地震记录数值模拟的这几模型法二、实验目的掌握褶积模型基本理论、实现方法与程序编制,由褶积模型初步分析地震信号的分辨率问题三、实验原理1、褶积原理地震勘探的震源往往是带宽很宽的脉冲,在地下传播、反射、绕射到测线,传播经过中高频衰减,能量被吸收。
吸收过程可以看成滤波的过程,滤波可以用褶积完成。
在滤波中,反射系数与震源强弱关联,吸收作用与子波关联。
最简单的地震记录数值模拟,可以看成反射系数与子波的褶积。
通常,反射系数是脉冲,子波取雷克子波。
(1)雷克子波wave(t)=(1?2 n 2f2t2)e?2 n(2)反射系数:1z=z 反射界面rflct(z)=Oz=others(3)褶积公式:数值模拟地震记录trace(t):trace(t)=rflct(t)*wave(t)2f2t2反射系数的参数由z变成了t,怎么实现?在简单水平层介质,分垂直和非垂直入射两种实现,分别如图1和图2所示。
1)垂直入射:2)非垂直入射:2ht=2t=图一垂直入射图二非垂直入射2、褶积方法(1)离散化(数值化)计算机数值模拟要求首先必须针对连续信号离散化处理。
反射系数在空间模型中存在,不同深度反射系数不同,是深度的函数。
子波是在时间记录上一延续定时间的信号,是时间的概念。
在离散化时,通过深度采样完成反射系数的离散化,通过时间采样完成子波的离散化。
如果记录是Trace(t),则记录是时间的函数,以时间采样离散化。
时间采样间距以?t表示,深度采样间距以?z 表示。
在做多道的数值模拟时,还有横向x的概念,横向采样间隔以?x表示。
离散化的实现:t=It x ?t ;x=lx x ?x ;z=lz x ?z 或:lt=t/?t;lx=x/?x;lz=z/?z (2)离散序列的褶积tracelt= ltao=? rflct(ltao) x wave(lt?ltao) 四、实验内容1、垂直入射地震记录数值模拟的褶积模型;2、非垂直入射地震记录数值模拟的褶积模型;3、点绕射的地震记录数值模拟的褶积模型;五、方法路线根据褶积模型的实验原理编写C++程序,完成对于垂直入射波的褶积。
数值模型模拟实验报告实验名称:地震记录数值模拟的褶积模型法实验学院:地球物理学院学号:2010050603xx教师:熊高军姓名:Blackheart--Mike日期:2010.6.13实验一一、实验题目地震记录数值模拟的褶积模型法二、实验目的掌握褶积模型基本理论、实现方法与程序编制,由褶积模型初步分析地震信号的分辨率问题。
三、原理公式1、褶积原理地震勘探的震源往往是带宽很宽的脉冲,在地下传播、反射、绕射到测线,传播经过中高频衰减,能量被吸收。
吸收过程可以看成滤波的过程,滤波可以用褶积完成。
在滤波中,反射系数与震源强弱关联,吸收作用与子波关联。
最简单的地震记录数值模拟,可以看成反射系数与子波的褶积。
通常,反射系数是脉冲,子波取雷克子波。
(1)雷克子波(2)反射系数:(3)褶积公式:数值模拟地震记录trace(t):trace(t) =rflct(t)wave(t)反射系数的参数由z变成了t,怎么实现?在简单水平层介质,分垂直和非垂直入射两种实现,分别如图1和图2所示。
1)垂直入射:2)非垂直入射:2、褶积方法(1)离散化(数值化)计算机数值模拟要求首先必须针对连续信号离散化处理。
反射系数在空间模型中存在,不同深度反射系数不同,是深度的函数。
子波是在时间记录上一延续定时间的信号,是时间的概念。
在离散化时,通过深度采样完成反射系数的离散化,通过时间采样完成子波的离散化。
如果记录是Trace(t),则记录是时间的函数,以时间采样离散化。
时间采样间距以 t表示,深度采样间距以 z表示。
在做多道的数值模拟时,还有横向x的概念,横向采样间隔以 x表示。
离散化的实现:t=It× t;x=Ix× x;z=Iz× z或:It=t/ t; Ix=x/ x; Iz=z/ z(2)离散序列的褶积四、实验内容1、垂直入射地震记录数值模拟的褶积模型;2、非垂直入射地震记录数值模拟的褶积模型;3、点绕射的地震记录数值模拟的褶积模型;五、实验步骤(一)实验一:1、根据垂直入射褶积模型理论算法,填充程序(附后)的下划线部分,使程序完整,调试程序,算出结果,用“Fimage”显示软件显示褶积结果;2、根据非零偏移距算法,编制非零偏移距褶积模型程序,算出结果,用“Fimage”显示软件显示褶积结果。
(参考垂直入射褶积模型理论算法和程序,子波与反射层不变);3、变换子波的长度Nw和主频fm,重复1和2;(1)Nw=80的情况下:1)fm=5,2)fm=10,3)fm=15,3)fm=20,3)fm=55;(2)Nw=160的情况下:1)fm=5,2)fm=10,3)fm=15,3)fm=20,3)fm=55;六、实验结果1、结果显示2、对比分析对于垂直入射而言,当子波长度保持不变而频率逐渐升高时画出的图像都在0.5下方而且一次变得细起来,而对于子波长度不同频率相同时子波长度打的图像位于0.5上方,同样子波长度不变频率增加时图像变细七、讨论建议1、实验收获:获得了垂直入射地震记录数值模拟的褶积模型和非垂直入射地震记录数值模拟的褶积模型2、存在问题:开始的时候Nt取值较小让其范围超出了最大的容纳范围,最后经过改正把Nt改的比原来大一些才得出了正确的结果,开始非垂直绘图出来都是直线,经检查是程序出现咯一点点小问题,但却花了很长时间才找出来错误3、心得体会:在做程序的时候一定要细心,一个小小的错误都会耽误自己做程序的效率,而且写程序的时候一定要对其这样发现错误检查起来也方便得多.实验二:两层反射界如图3所示为两层反射界面的模型,对比不同间距H12情况下,不同长子波长度Nw和主频fm的褶积模型。
1、H12=20m时:(1)Nw=80的情况下:1)fm=5,2)fm=10,3)fm=15,4)fm=20,5)fm=55;(2)Nw=160的情况下:1)fm=5,2)fm=10,3)fm=15,4)fm=20,5)fm=55;2、H12=40m 时:(1)Nw=80的情况下:1)fm=5,2)fm=10,3)fm=15,3)fm=20,3)fm=55;(2)Nw=160的情况下:1)fm=5,2)fm=10,3)fm=15,3)fm=20,3)fm=55;3、H12=60m时:(1)Nw=80的情况下:1)fm=5,2)fm=10,3)fm=15,3)fm=20,3)fm=55;(2)Nw=160的情况下:1)fm=5,2)fm=10,3)fm=15,3)fm=20,3)fm=55;4、H12=80m时:(1)Nw=80的情况下:1)fm=5,2)fm=10,3)fm=15,3)fm=20,3)fm=55;(2)Nw=160的情况下:1)fm=5,2)fm=10,3)fm=15,3)fm=20,3)fm=55;六、实验结果2、结果显示H=20H=40H=60H= 802、对比分析:从图中可以看出档Nw不变时频率一次增加时获得的图像变得细起来而且清晰度分辨率更好一些,当频率相同而Nw不同时图像分别位于0.5的上下方,变换子波的长度为64的位于下方,而变换子波长度为128的位于0.5上方七、讨论建议1、实验收获:获得了不同长子波长度Nw和主频fm的褶积模型。
2、存在问题:开始得出的图像始终一样,最终检查出来是程序的错误,并且开始的时候Nt取值较小让其范围超出了最大的容纳范围,最后经过改正把Nt改的比原来大一些才得出了正确的结果,开始非垂直绘图出来都是单直线,经检查是程序出现咯一点点小问题,但却花了很长时间才找出来错误3、心得体会:在做程序的时候一定要细心,一个小小的错误都会耽误自己做程序的效率,而且写程序的时候一定要对齐,这样发现错误检查起来也方便得多,实验的结果和理论结果有一定的误差,但在允许的范围,总的来说达到了想要的结果.实验三点绕射的褶积模型(1)地质模型与参数:如图4所示为点绕射模型(下图)及其地震记录(上图)。
参数为:Nx=128,Nz=200,V=3500m/s,h=1000m。
如图4图下图所示,地下绕射点位置为:(Ix0=NX/2,Iz0=1000/20)。
其他参数与前述同。
如图4所示,绕射点正上方检波器的自激自收世间为t0:t0=2h/v任意位置检波器的自激自收世间为ti:(3)褶积模型爆炸反射界面传播到检波点的脉冲值游侠是计算:与子波w(It)褶积,求得褶积模型。
计算公式如下:),(It Ix r),(It Ix p六、实验结果七、讨论建议1、实验收获:获得咯较理想的点绕射的褶积模型的图像2、存在的问题以及其它问题:点绕射它既是发射点也是接收点所以其中有很多其他波的影响3、心得体会:在做程序的时候一定要细心,注意自己的格式,一个小小的错误都会耽误自己做程序的效率,而且写程序的时候一定要对齐,这样发现错误检查起来也方便得多,实验的结果和理论结果有一定的误差,但在允许的范围,总的来说达到了想要的结果.附:程序编制与分析//1. 预处理部分#include<math.h>#include<stdio.h>#include<string.h>int Cnltn(float,float);int Rflct(float,float,float);int Wave(float,float);#define Nx 128#define Nt 256#define Nw 32//////////////////////////////////////////////////////////////////////////2. 主程序波分int main(){float dt=0.004,dx=20,fm=25,h=1000,v=3000;int iflag_Co,iflag_Re,iflag_Wv;if(iflag_Wv=Wave(fm,dt)!=1)printf("Wave is error");if(iflag_Re=Rflct(dt,h,v)!=1)printf("Reflection is error");if(iflag_Co=Cnltn(dt,dx)!=1)printf("Convosion is error"); }//////////////////////////////////////////////////////////////////////// 3.函数实现部分// 3.1 Wave Formaing functionint Wave(float fm,float dt){FILE *fpw;int It;float Wa[Nw],t;double pai=3.1415926;if((fpw=fopen("wave.dat","wb"))==NULL)printf("Connot open file ""wave""");for(It=0;It<Nw;It++){t=(float)(It+1)*dt;Wa[It]=(float)(1.0-2*pai*pai*fm*fm*t*t)*(float)exp(-pai*pai*fm*fm*t); //雷克子波的计算?fwrite(&Wa[It],sizeof(Wa[It]),1,fpw);}fclose(fpw);return(1);}/////////////////////////////////////// 3.2 Reflect Formaing functionint Rflct(float dt,float h,float v){FILE *fpr;int It,Ix,Ltdpth;float t;float Re[Nt];if((fpr=fopen("Reflect.dat","wb"))==NULL)printf("Connot open file ""Reflect""");for(Ix=0;Ix<Nx;Ix++){for(It=0;It<Nt;It++){Re[It]=0.;}t=(float)2.*h/v;Ltdpth=(int)(t/dt);Re[Ltdpth]=1.;for(It=0;It<Nt;It++){fwrite(&Re[It],sizeof(Re[It]),1,fpr);}}fclose(fpr);return(1);}/////////////////////////////////////// 3.2 Convolution functionint Cnltn(float dt,float dx){FILE *fpc,*fpw,*fpr;int It,Ix,Itao;float Wa1[Nw],Wa[Nw],Re[Nt+Nw+Nw],Re1[Nt];float Con[Nt+Nw];if((fpc=fopen("Convosion.dat","wb"))==NULL)printf("Connot open file ""Convosion""");if((fpw =fopen("wave.dat","rb"))==NULL)printf("Connot open file ""wave""");if((fpr =fopen("Reflect.dat","rb"))==NULL)printf("Connot open file ""Reflect""");for(Ix=1;Ix<2;Ix++){for(It=0;It<Nw;It++){fread(&Wa1[It],sizeof(Wa1[It]),1,fpw);Wa[Nw-1-It]=Wa1[It];}}fclose(fpw);for(Ix=0;Ix<Nx;Ix++)for(It=0;It<Nt;It++){fread(&Re1[It],sizeof(&Re1[It]),1,fpr);}for(It=0;It<Nt+2*Nw;It++){Re[It]=0.;}for(It=0;It<Nt;It++){Re[Nw+Nt]=Re1[Nt];//反射系数数据移动: "0 到Nt" 移为"Nw 到Nw+Nt"}for(It=0;It<Nt+Nw;It++){Con[It]=0;for(Itao=0;Itao<Nw;Itao++){Con[It]=Con[It]+Wa[Itao]*Re[It+Itao];//褶积运算//printf("%f\n",Con[It]);}for(It=Nw/2;It<Nt+Nw/2;It++){fwrite(&Con[It],sizeof(Con[It]),1,fpc); }}fclose(fpw);fclose(fpr);fclose(fpc);return(1);。