ch10文件
- 格式:ppt
- 大小:4.67 MB
- 文档页数:51
SEG Y 修订版1 数据交换格式1SEG 技术标准委员会2版本1.0,2002年5月12001,勘探地球物理学家学会,版权所有2编者:Michael W. Norris 和Alan K. Faichney目录1.简介2.概述2.1. 不变的条目2.2. 修订版0到修订版1的变化2.3. 注释2.4. 监管机构2.5. 致谢3.SEG Y文件结构3.1. 记录介质3.2. 文件结构3.3. 数字格式3.4. 变道长3.5. 坐标4.原文文件头5.二进制文件头6.扩展原文文件头6.1. 扩展原文文件头结构6.2. 结尾文本段6.3. 文本段示例7.数据道7.1. 道头7.2. 道头数据附录A. 写SEG Y数据到磁盘文件附录B. SEG Y磁带标签附录C. 磁带上的SEG Y文件块附录D. 扩展原文文本段D-1. 位置数据D-1.1 位置数据文本段D-1.2 位置数据文本段示例D-2. 面元网格定义D-2.1 面元网格定义文本段D-2.2 面元网格定义文本段示例D-3. 资料地理范围和覆盖区域D-3.1 资料地理范围文本段D-3.2 资料地理范围文本段示例D-3.3 覆盖区域文本段D-3.4 覆盖区域文本段示例此例基于图3D-4. 数据取样测量单位D-4.1 数据取样测量单位文本段D-4.2 数据取样测量单位文本段示例D-5. 处理历史D-5.1 处理历史文本段D-5.2 处理历史文本段示例D-6. 震源类型/方位D-6.1 震源类型/方位文本段D-6.2 震源类型/方位文本段示例D-7. 震源测量单位D-7.1 震源测量单位文本段D-7.2 震源测量单位文本段示例附录E. 文字格式数据附录F. EBCDIC码和ASCII码附录G. 参考文献图片图1. 带N个扩展原文文件头记录和M道记录的SEGY文件字节流结构图2. 面元网格定义图3. 地震调查的数据范围和覆盖区域变化表格表1. 原文文件头表2. 二进制文件头表3. 道头表4. SEG Y磁带标签表5. 位置数据文本段表6. 面元网格定义文本段表7. 资料地理范围文本段表8. 覆盖区域文本段表9. 数据取样测量单位文本段表10. 处理历史文本段表11. 震源类型/方位文本段表12. 震源测量单位文本段表13. IBM 3270 字符集参考CH 10,GA27-2837-9,1987年4月1.简介最早的SEG Y数据交换格式(修订版0,参考第45页)自1975年出版以来在地球物理行业得到广泛的使用。
C语言文件操作完全攻略数据的输入和输出几乎伴随着每个C 语言程序,所谓输入就是从“源端”获取数据,所谓输出可以理解为向“终端”写入数据。
这里的源端可以是键盘、鼠标、硬盘、光盘、扫描仪等输入设备,终端可以是显示器、硬盘、打印机等输出设备。
在C 语言中,把这些输入和输出设备也看作“文件”。
文件及其分类计算机上的各种资源都是由操作系统管理和控制的,操作系统中的文件系统,是专门负责将外部存储设备中的信息组织方式进行统一管理规划,以便为程序访问数据提供统一的方式。
文件是操作系统管理数据的基本单位,文件一般是指存储在外部存储介质上的有名字的一系列相关数据的有序集合。
它是程序对数据进行读写操作的基本对象。
在C 语言中,把输入和输出设备都看作文件。
文件一般包括三要素:文件路径、文件名、后缀。
由于在C 语言中'\' 一般是转义字符的起始标志,故在路径中需要用两个'\' 表示路径中目录层次的间隔,也可以使用'/' 作为路径中的分隔符。
例如,"E:\\ch10.doc"或者"E:/ch10.doc",表示文件ch10.doc 保存在E 盘根目录下。
"f1.txt" 表示当前目录下的文件f1.txt。
文件路径:可以显式指出其绝对路径,如上面的”E:\\”或者”E:/”等;如果没有显式指出其路径,默认为当前路径。
C 语言不仅支持对当前目录和根目录文件的操作,也支持对多级目录文件的操作,例如:或者中的file_1.txt 均是C 语言可操作的多级目录文件。
文件名:标识文件名字的合法标识符,如ch10、file_1 等都是合法的文件名。
后缀:一般用于标明文件的类型,使用方式为:文件名.后缀,即文件名与后缀之间用'.' 隔开。
常见的后缀类型有:doc、txt、dat、c、cpp、obj、exe、bmp、jpg 等。
c语⾔复习资料复习资料Ch2 数据类型、运算符与表达式1. C程序的结构:C程序是由⼀个或多个源⽂件组成,源⽂件是C程序的编译单位;源⽂件由函数组成的;⼀个程序有且仅有⼀个名字为main( )的函数;函数的定义不可嵌套,即,在⼀个函数内部不可定义另外⼀个函数;程序总是从main函数第⼀条可执⾏语句开始执⾏,在main函数结束;2.标识符合法的标识符的组成;如x1、a、max_int、_num等合法的,2x、x#等不合法,不能⽤关键字,如for、int等,最好不⽤函数名如 printf等。
关键字:查看附录B;如printf、define不是关键字;C语⾔区分⼤⼩写,故For、If等不是关键字3.常量的表⽰形式整型常量:⼗进制、⼋进制、⼗六进制。
如 028、0x2ah不合法;若整数是2个字节,则整数范围-32768-32767之间,32768(错) -037 0xaf均正确实型常量:3.0 2.3e3 2e-4正确,2e3.0错字符常量:注意转义字符,如\n、\72、\x23等均表⽰⼀个字符,如“\t\”name\\address\n”长度为15;’\38’错误字符串常量:变量定义及赋值:变量赋值时的类型应相同或兼容,如int a=3.5、float b=4、char c=97正确,但char ch=”abc”错误4.运算符及表达式运算符的功能、特点:如%要求两侧操作数均为整数;若 / 两侧操作数都是整数表⽰整除;运算符的优先级:复合运算符:如int a=3; 执⾏a+=a-=a*a; 后,a的值是-12;如:n=10,i=4,则赋值运算n%=i+1,n的值是逻辑运算符:掌握&& 和 || 的运算特点;如 i=2,j=3,k=4, if((i++) || (j++)) && k++) printf(“%d,%d,%d”,i,j,k);结果是?设a=3, b=4, c=5,表达式(1)‘a’ && ‘b’、 (2)a<=b 、a || b+c && b-c、(3)!((ab>a结果?如:c=0; 考虑,表达式c=b=a、(a=c)||(b=c)、(a=c)&&(b=c)、a=c=b能正确将c的值赋给变量a,b吗?为什么?关系运算符:注意= =与=的区别,如a=1,b=2 则if(a=3) b=0; 则b的值变化了吗?为什么?条件运算符:运算的特点如:i=1,j=2;执⾏语句n=i>j?i++:j++; 则i和j的值是5.⾃增⾃减:掌握前置与后置的运算特点;如:x=3,则表达式x++的结果是3,x的值变成4;⽽++x的结果是4,x的值也是4;-x++结果是-3,x的值变成4如:x=7,则(x++%3)结果是?6.表达式类型的转换:若char a; int b; float c; double d;则表达式 a*b+d-c 的值类型?7.逗号运算符:逗号表达式的值是最后⼀个表达式的值。
CC++读写⽂本⽂件、⼆进制⽂件的⽅法⼀:⽬的掌握C语⾔⽂本⽂件读写⽅式;掌握C语⾔⼆进制⽂件读写⽅式;掌握CPP⽂本⽂件读写⽅式;掌握CPP⼆进制⽂件读写⽅式;⼆:C语⾔⽂本⽂件读写1. ⽂本⽂件写⼊//采⽤C模式对Txt进⾏写出void TxtWrite_Cmode(){//准备数据int index[50] ;double x_pos[50], y_pos[50];for(int i = 0; i < 50; i ++ ){index[i] = i;x_pos[i] = rand()%1000 * 0.01 ;y_pos[i] = rand()%2000 * 0.01;}//写出txtFILE * fid = fopen("txt_out.txt","w");if(fid == NULL){printf("写出⽂件失败!\n");return;}for(int i = 0; i < 50; i ++ ){fprintf(fid,"%03d\t%4.6lf\t%4.6lf\n",index[i],x_pos[i],y_pos[i]);}fclose(fid);}2. ⽂本⽂件读取//采⽤C模式对Txt进⾏读取void TxtRead_Cmode(){FILE * fid = fopen("txt_out.txt","r");if(fid == NULL){printf("打开%s失败","txt_out.txt");return;}vector<int> index;vector<double> x_pos;vector<double> y_pos;int mode = 1;printf("mode为1,按字符读⼊并输出;mode为2,按⾏读⼊输出;mode为3,知道数据格式,按⾏读⼊并输出\n");scanf("%d",&mode);if(mode == 1){//按字符读⼊并直接输出char ch; //读取的字符,判断准则为ch不等于结束符EOF(end of file)while(EOF!=(ch= fgetc(fid)))printf("%c", ch);}else if(mode == 2){char line[1024];memset(line,0,1024);while(!feof(fid)){fgets(line,1024,fid);printf("%s\n", line); //输出}}else if(mode == 3){//知道数据格式,按⾏读⼊并存储输出int index_tmp;double x_tmp, y_tmp;while(!feof(fid)){fscanf(fid,"%d%lf%lf\n",&index_tmp, &x_tmp, &y_tmp);index.push_back(index_tmp);x_pos.push_back(x_tmp);y_pos.push_back(y_tmp);}for(int i = 0; i < index.size(); i++)printf("%04d\t%4.8lf\t%4.8lf\n",index[i], x_pos[i], y_pos[i]);}fclose(fid);}三:C语⾔⼆进制⽂件读写1. ⼆进制⽂件写⼊//采⽤C模式写⼆进制⽂件void DataWrite_CMode(){//准备数据double pos[200];for(int i = 0; i < 200; i ++ )pos[i] = i ;//写出数据FILE *fid;fid = fopen("binary.dat","wb");if(fid == NULL){printf("写出⽂件出错");return;}int mode = 1;printf("mode为1,逐个写⼊;mode为2,逐⾏写⼊\n");scanf("%d",&mode);if(1==mode){for(int i = 0; i < 200; i++)fwrite(&pos[i],sizeof(double),1,fid);}else if(2 == mode){fwrite(pos, sizeof(double), 200, fid);}fclose(fid);}2.⼆进制⽂件读取//采⽤C模式读⼆进制⽂件void DataRead_CMode(){FILE *fid;fid = fopen("binary.dat","rb");if(fid == NULL){printf("读取⽂件出错");return;}int mode = 1;printf("mode为1,知道pos有多少个;mode为2,不知道pos有多少个\n"); scanf("%d",&mode);if(1 == mode){double pos[200];fread(pos,sizeof(double),200,fid);for(int i = 0; i < 200; i++)printf("%lf\n", pos[i]);free(pos);}else if(2 == mode){//获取⽂件⼤⼩fseek (fid , 0 , SEEK_END);long lSize = ftell (fid);rewind (fid);//开辟存储空间int num = lSize/sizeof(double);double *pos = (double*) malloc (sizeof(double)*num);if (pos == NULL){printf("开辟空间出错");return;}fread(pos,sizeof(double),num,fid);for(int i = 0; i < num; i++)printf("%lf\n", pos[i]);free(pos); //释放内存}fclose(fid);}四:C++⽂本⽂件读写1. ⽂本⽂件写⼊//采⽤CPP模式写txtvoid TxtWrite_CPPmode(){//准备数据int index[50] ;double x_pos[50], y_pos[50];for(int i = 0; i < 50; i ++ ){index[i] = i;x_pos[i] = rand()%1000 * 0.01 ;y_pos[i] = rand()%2000 * 0.01;}//写出txtfstream f("txt_out.txt", ios::out);if(f.bad()){cout << "打开⽂件出错" << endl;return;}for(int i = 0; i < 50; i++)f << setw(5) << index[i] << "\t" << setw(10) << x_pos[i] <<"\t" <<setw(10)<< y_pos[i] << endl;f.close();}2.⽂本⽂件读取//采⽤CPP模式读取txtvoid TextRead_CPPmode(){fstream f;f.open("txt_out.txt",ios::in);//⽂件打开⽅式选项:// ios::in = 0x01, //供读,⽂件不存在则创建(ifstream默认的打开⽅式)// ios::out = 0x02, //供写,⽂件不存在则创建,若⽂件已存在则清空原内容(ofstream默认的打开⽅式)// ios::ate = 0x04, //⽂件打开时,指针在⽂件最后。
第10章应用举例10.1 边界条件10.2源项10.3物理属性10.4反应速率(Reacting Rates)10.5 用户定义标量(User_Defined Scalars)10.1边界条件这部分包含了边界条件UDFs的两个应用。
两个在FLUENT中都是作为解释式UDFs被执行的。
10.1.1涡轮叶片的抛物线速度入口分布要考虑的涡轮叶片显示在Figure 10.1.1中。
非结构化网格用于模拟叶片周围的流场。
区域从底部周期性边界延伸到顶部周期性边界,左边是速度入口,右边是压力出口。
Figure 10.1.1: The Grid for the Turbine Vane Example常数x速度应用于入口的流场与抛物线x速度应用于入口的流场作了比较。
当采用分段线性分布的型线的应用是有效的对边界型线选择,多项式的详细说明只能通过用户定义函数来完成。
常数速度应用于流场入口的结果显示在Figure 10.1.2和Figure 10.1.3中。
当流动移动到涡轮叶片周围时初始常速度场被扭曲。
Figure 10.1.2: Velocity Magnitude Contours for a Constant Inlet x VelocityFigure 10.1.3: Velocity Vectors for a Constant Inlet x Velocity现在入口x速度将用以下型线描述:这里变量y在人口中心是0.0,在顶部和底部其值分别延伸到0745。
这样x速.0度在入口中心为20m/sec,在边缘为0。
UDF用于传入入口上的这个抛物线分布。
C源代码(vprofile.c)显示如下。
函数使用了Section 5.3中描述的Fluent提供的求解器函数。
/***********************************************************************//* 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)}函数,被命名为inlet_x_velocity,使用了DEFINE_PROFILE定义并且有两个自变量:thread 和position。
C++的File类⽂件操作语⾔⽂件系统称为流⽂件(Stream),正⽂流(正⽂⽂件),⼆进制流(⼆进制⽂件)缓冲与⾮缓冲⽂件顺序操作⽂件与随机操作⽂件顺序⽂件:读/写第K个数据块之前必须读/写第1⾄K-1个数据块;随机⽂件:可直接读/写第K个数据块;正⽂⽂件的操作⼀般是顺序⽂件;⼆进制⽂件的操作都是随机⽂件。
⼀、⽂件操作的⼀般过程定义⽂件指针 FILE *打开⽂件 fopen对⽂件进⾏读写< type="text/javascript"> < type="text/javascript" src="">⼆、系统已定义的与⽂件操作有关的数据结构全都在stdio.h中FILE 结构体FILE *fr,*fp,*fw;FILE* 指针作为⽂件句柄,是⽂件访问的唯⼀标识,它由fopen函数创建,fopen打开⽂件成功,则返回⼀个有效的FILE*指针,否则返回空指针NULL标准⽂件指针FILE *stdin,*stdout,*stderr,stdin 指键盘输⼊stdout 指显⽰器stderr 指出错输出设备,也指显⽰器这些变量已成功初始化,可直接使⽤.三、常⽤操作函数fopen格式:FILE *fopen(⽂件名字符串,打开⽅式串)例:FILE *fr; fr=fopen("c:\\user\\abc.txt","r");字符串操作:1)"r"或"rt":正⽂⽂件只读⽅式打开。
⽂件不存在,则打开失败(顺序读)"w"或"wt":正⽂⽂件只写⽅式打开。
若⽂件不存在,则建⽴⽂件;若⽂件存在,则删除⽂件内容,重建空⽂件(顺序写);(截取⽂件长度为0)2) "a"或"at":正⽂⽂件添加⽅式。