亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c

?? 用于2維的射線追蹤
?? C
字號:
/* * Ray2mesh : software for geophysicists. * Compute various scores attached to the mesh cells, based on geometric   information that rays bring when the traverse the cell. * * Copyright (C) 2003, St閜hane Genaud and Marc Grunberg * * This tool is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#ifdef HAVE_CONFIG_H#include <config.h>#endif#ifdef USE_MPI#include <mpi.h>#endif#ifdef USE_ZLIB#include "zlib.h"#endif#include <const_ray2mesh.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/time.h>#include <sys/types.h>#include <sys/stat.h>#include <errno.h>#include <signal.h>#include <popt.h>#include <iasp/iasp.h>#include <ray/raydescartes.h>#include <mesh/mesh.h>#include <mesh/layer.h>#include <mesh/cellinfo.h>#include <mesh/mesh2xml.h>#include <sparse/sparse.h>#include "ray2mesh.h"#include "r2mfile.h"#include "merge.h"#include "score.h"#include "buffer.h"#include "filter.h"char *celldatafilename = NULL;		/**< these are kept global to close */FILE *fdinput = NULL;			/**< them in case of emergency (Ctrl-C) */struct mesh_t *mesh;			/**< mesh structure */struct cell_info_t ****cell_info = NULL;/**< traversed cells information */char *output_format = NULL;			/**< r2m and/or sco output */int rank;volatile int mem_used=0;/** \brief shows ray2mesh version ans compilation flags */void ray2mesh_info(struct ray_config_t *ray_config){    char *modelver = libmodelversion();    char *rayver = librayversion();    char *raycodever = libraycodeversion();    char *meshver = libmeshversion();    char *sparsever = libsparseversion();    fprintf(stderr, "%s: version %s", PACKAGE, VERSION);#ifdef STATIC_BIN    fprintf(stderr, " [*static binary*]");#endif    fprintf(stderr, "\nusing \t%s\n", modelver);    fprintf(stderr, "\t%s\n", rayver);    fprintf(stderr, "\t%s\n", raycodever);    fprintf(stderr, "\t%s\n", meshver);    fprintf(stderr, "\t%s\n", sparsever);    free(modelver);    free(rayver);    free(raycodever);    free(meshver);    free(sparsever);    fprintf(stderr, "Compilation flags : ");#ifdef USE_MPI    fprintf(stderr, "USE_MPI ");    #ifdef MASTER_SLAVE        fprintf(stderr, "MASTER_SLAVE ");    #else        fprintf(stderr, "SCATTER ");    #endif    #ifdef USE_MPILB    fprintf(stderr, "USE_MPILB ");    #endif#endif#ifdef DEBUG    fprintf(stderr, "DEBUG ");#endif#ifdef ALLOC_MEMORY_CHUNK    fprintf(stderr, "ALLOC_MEMORY_CHUNK ");#endif#ifdef RAYTRACING_ONLY    fprintf(stderr, "RAYTRACING_ONLY ");#endif#ifdef USE_ZLIB    fprintf(stderr, "USE_ZLIB(%s) ", zlibVersion());#endif    fprintf(stderr, "\n");}/** \brief given a filename, stops if file is unreadable  */void check_file_access(char *filename){struct stat st;    /* check read permissions */    if (access(filename, R_OK) < 0) {	fprintf(stderr, "%s : cannot access file %s. Exiting.\n", PACKAGE, filename);	exit(1);    }    /* check filetype */    stat(filename,&st);    if (!S_ISREG(st.st_mode)) {	fprintf(stderr, "%s : file %s is not a regular file. Exiting.\n", PACKAGE, filename);	exit(1);    }}/** \brief handler for Ctrl-C, close the files */void emergency_halt(){    fprintf(stdout, "*** Emergency stop (Ctrl-C). Sync files ***\n");    fflush(stdout);    if (strchr(output_format, 'r')) {	/* R2M */	make_domain_info_file("emergency.r2m", cell_info, mesh, 0, 1, 0);    } else {	/* SCO */        fprintf(stdout, "-> Computing cell score ... ");	compute_score(cell_info, mesh);        fprintf(stdout, "done.\n-> Dumping cell information ... ");	mesh_cellinfo_write_sco ("emergency.sco", cell_info, mesh);    }    fprintf(stdout, "done.\n");#ifdef USE_MPI    MPI_Finalize();#endif    exit(1);}/* * \brief parse command line using popt : checks validity of optoins  * specified and returns parameters values. * * PRECOND : the default values for optional arguments must be set.      */voidparse_command_line(int argc, char **argv,		   struct ray_config_t *ray_config,		   struct ray_filter_t *ray_filter,		   char **meshfile,		   char **outputfile,		   char **inputdatafile,		   char **rayfilter_filename, 		   float *mem_limit, 		   char **output_format,		   char **tmpdir#ifdef MASTER_SLAVE		   , int *chunksize#endif    ){    static float length_opt;    static char *meshfile_opt=NULL;	/* there to build on IRIX with popt */    static char *outputfile_opt=NULL;    static char *vmodel;    static char *inputdatafile_opt=NULL;    static char *iasptables_opt;    static char *filtered=NULL;    static float mem_limit_opt;    static char *setfilter_opt=NULL;    static char *outputformat_opt=NULL;    static int iterate_opt;    static char *tmpdir_opt=NULL;#ifdef MASTER_SLAVE    static int chunksize_opt;#endif        poptContext cx;    int rc;    int nbarg;    #include "options.h"    /* init */    set_ray_config_to_default(ray_config);    /* ray_config->iterative_mode = ITERATIVE_MODE_ANGULAR; */    /* ray_config->iterative_mode = ITERATIVE_MODE_OFF; */    /* ray_config->iterative_mode = ITERATIVE_MODE_ON; */    /* args parsing using popt */    cx = poptGetContext(PACKAGE, argc, (const char **) argv, options, 0);    if (argc == 1) {	poptPrintUsage(cx, stdout, 0);	exit(1);    }    do {	rc = poptGetNextOpt(cx);	switch (rc) {	    /* help */	case OPT_HELP:	    poptPrintHelp(cx, stdout, 0);	    exit(0);	case OPT_VELOCITY_MODEL:            check_file_access(vmodel);	    ray_config->velocity_model = load_velocity_model(vmodel);	    ray_config->get_velocity_p = my_get_velocity_p;	    ray_config->get_velocity_s = my_get_velocity_s;	    break;	case OPT_LENGTH:	    ray_config->length_inc = length_opt;	/* update if increment specified */	    break;	case OPT_OUTPUT_FORMAT:	/* sco output selected */	    if ( !strchr(outputformat_opt,'s') &&                 !strchr(outputformat_opt,'r'))            {                    fprintf(stderr, "format must be 'sco' or 'r2m'.\n");                    exit(1);            }	    if (strchr(outputformat_opt,'s') && strchr(outputformat_opt,'r')) {	            fprintf(stderr, "sorry, both output not yet implemented\n");                    exit(1);	    }	    break;#ifdef MASTER_SLAVE	case OPT_CHUNKSIZE:	    *chunksize = chunksize_opt;	    break;#endif	case OPT_TABLES:#ifdef DEBUG	    fprintf(stderr, "setting iasp tables path to \"%s\"\n",		    iasptables_opt);#endif	    set_modnam(iasptables_opt);	    break;	case OPT_ITERATE:	    ray_config->iterative_mode = ITERATIVE_MODE_ON;	    break;	case OPT_MEM_LIMIT:	    *mem_limit = mem_limit_opt;	    break;	case OPT_SET_FILTER:	    nbarg = parse_filter_value(strdup(setfilter_opt), ray_filter);	    ray_filter->activated = 1;	    if (nbarg!=3) {		    fprintf(stderr, "parsing filter string (%s) failed\n", 				    setfilter_opt); 		    fprintf(stderr, "use --set-filter=r,d,n\n");		    exit(1);	    }	    break;	case OPT_VERSION:	    ray2mesh_info(ray_config);	    exit(0);	case POPT_ERROR_BADOPT:	/* error */	    fprintf(stderr, "%s: %s\n", poptBadOption(cx, 0),		    poptStrerror(rc));	    poptPrintUsage(cx, stdout, 0);	    exit(1);	}    }    while (rc > 0);    /* check meshfile */    if (!meshfile_opt) {	fprintf(stderr, "%s: missing -m option\n", PACKAGE);	exit(1);    } else {	*meshfile = strdup (meshfile_opt);    }    if (!outputfile_opt) {        fprintf(stderr, "%s: missing -o option\n", PACKAGE);	exit(1);    } else {    	*outputfile = strdup(outputfile_opt);    }    /* check inputdatafile option */    if (!inputdatafile_opt) {	fprintf(stderr, "%s: missing -i option\n", PACKAGE);	exit(1);    } else {    	*inputdatafile = strdup(inputdatafile_opt);    }    /* check output format */    if (!outputformat_opt) {        fprintf(stderr, "%s: missing -f option, sco or r2m\n", PACKAGE);	exit(1);    } else {    	*output_format = strdup(outputformat_opt);    }    if (filtered) {    	*rayfilter_filename = strdup (filtered);    }    /* set tmp directory */    if (tmpdir_opt) {    	*tmpdir = strdup (tmpdir_opt);    } else {	*tmpdir = strdup ("/tmp");    }	    {     struct stat stabuf;     if (stat(*tmpdir, &stabuf) == -1) {        perror(*tmpdir);	exit(1);     }     if (!S_ISDIR(stabuf.st_mode)) {	fprintf(stderr, "%s is not a directory !\n", *tmpdir);	exit(1);     }    }    poptFreeContext(cx);}void print_ray_ko_info (int rank, struct raydata_t *raydata, int i, int nbrays, char *rai_status) {	fprintf(stderr,		   "[process %d] KO %d/%d,  %s,  -s %f,%f,%f -d %f,%f,%f -p %s\n",		   rank,		   i,nbrays,		   rai_status?rai_status:"",		   raydata[i].src.lat * TO_DEG,		   raydata[i].src.lon * TO_DEG,		   raydata[i].src.prof,		   raydata[i].dest.lat * TO_DEG,		   raydata[i].dest.lon * TO_DEG,		   raydata[i].dest.prof, raydata[i].phase); }/* \brief given a set of raydata elements (src and dest) pairs  * for rays, and the number of rays contained in the set,                * run ray3D_descartes of this bunch of ray data with a discretization   * step length of length_inc km. nb_ray_computed and nb_ray_rejected are * updated accordingly                                                   *  * POSTCOND : raydata is freed before returning                          */void bunch_of_ray(struct raydata_t *raydata,		  const int nbrays,		  const long int offset,		  struct ray_config_t *ray_config,		  struct ray_filter_t *ray_filter,		  int *nb_ray_computed,		  int *nb_ray_rejected,		  FILE * filterfd,		  FILE * matrix_length_fd, 		  FILE * residual_time_fd,		  FILE * event_fd){    struct ray3D_t **my3Drays, **ptr;    int i;    char **phases, **cp_phases;    char *rai_status=NULL;    double dT;			/* time residual */    double delta;    fprintf(stdout, "*** [process %d] bunch_of_ray rays  rayId=[%d  --> %d]\n",	    rank, *nb_ray_computed, *nb_ray_computed + nbrays -1);    for (i = 0; i < nbrays; i++) {	if (ray_filter->activated) {	        /* check if nb bundle is ok */		if (raydata[i].event_id < ray_filter->nb_event_min) {			print_ray_ko_info (rank, raydata, i, nbrays, "nbbundle");			(*nb_ray_rejected)++;			continue;		}	        /* check if delta is ok */		delta = AOB(&raydata[i].src, &raydata[i].dest)*TO_DEG;		if (delta > ray_filter->delta_max) {			print_ray_ko_info (rank, raydata, i, nbrays, "delta");			(*nb_ray_rejected)++;			continue;		}	}	/* do the ray-tracing */	phases = cp_phases = parse_phase(raydata[i].phase);	my3Drays = ray3D_descartes(phases, &raydata[i].src, 			&raydata[i].dest, ray_config);	/* desalloc phases */	while (*cp_phases) {	    free(*cp_phases);	    cp_phases++;	}	free(phases);	/* loop over all returned rays phases for this ray */	for (ptr = my3Drays; *ptr; ptr++) {	    /* dT = Tobserved - Tcomputed */	    dT = raydata[i].ray_travel_time - (*ptr)->time;	    /* check if residual time is small enough */	    if (ray_filter->activated && 	        fabs(dT) > ray_filter->residual_max) 	    {	    	/* free */		print_ray_ko_info (rank, raydata, i, nbrays, "residual");            	(*nb_ray_rejected)++;            	free_ray3D_descartes(*ptr);            	*ptr = NULL;		continue;	    }		    rai_status = str_ray_status((*ptr)->status);	    /* ray-trace failed */	    if ((*ptr)->status != RAYTRACE_OK) {		print_ray_ko_info (rank, raydata, i, nbrays, rai_status);		(*nb_ray_rejected)++;		free_ray3D_descartes(*ptr);            	*ptr = NULL;		free(rai_status);		rai_status=NULL;		continue;	    }	    /* ray-trace is ok */	    fprintf(stderr, "[process %d] OK ray %d/%d (phase %s) %s length=%f nbiter=%d dist_err=%f\n",		    rank,		    i, nbrays, raydata[i].phase, rai_status, 		    (*ptr)->total_length,		    (*ptr)->nb_iter_angle+(*ptr)->nb_iter_length,		    (*ptr)->dist_err);	    free(rai_status);	    rai_status=NULL;	    /* ray is ok */	    if (filterfd) {		/* user want to keep info about good rays */		fprintf(filterfd, "%ld %g %g %g %g %g %g %s %g %f\n",			raydata[i].event_id,			raydata[i].src.lat * TO_DEG,			raydata[i].src.lon * TO_DEG,			raydata[i].src.prof,			raydata[i].dest.lat * TO_DEG,			raydata[i].dest.lon * TO_DEG, 			raydata[i].dest.prof,			raydata[i].phase,			/*(*ptr)->code, */			raydata[i].ray_travel_time, 			dT);	    }#ifndef RAYTRACING_ONLY	    /* we must compute the time residual */	    if (residual_time_fd) {		fprintf(residual_time_fd, "%ld %lf\n",			(long int) *nb_ray_computed, (double) dT);	    }	    /* write event_id ray_id travel_time */   	    if (event_fd) {		fprintf(event_fd, "%ld %ld %lf\n", 			raydata[i].event_id, (long int) *nb_ray_computed, 			(*ptr)->time);	    }	    /* pass previous cell_info to accumulate results 	     * from several rays */	    cell_info = ray2mesh2(*ptr, *nb_ray_computed, mesh, cell_info,			 matrix_length_fd);#endif	    /* free */	    free_ray3D_descartes(*ptr);	    *ptr = NULL;	    (*nb_ray_computed)++;	}	free(my3Drays);    }    free(raydata);    }/*-----------------------------------------*//* main                                    *//*------- ---------------------------------*/#ifdef USE_MPI#ifdef MASTER_SLAVE#include "main_mpi_ms.c"#else#include "main_mpi.c"#endif#else#ifdef DEBUG#include <mcheck.h>#endif#include "main_seq.c"#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美无人高清视频在线观看| 欧美videossexotv100| 亚洲嫩草精品久久| 精品sm在线观看| 欧美亚一区二区| 国产一区二区三区在线观看免费视频| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩国产中文| 色呦呦国产精品| 国产精品夜夜爽| 美国av一区二区| 精品国产髙清在线看国产毛片| 亚洲丶国产丶欧美一区二区三区| 久久男人中文字幕资源站| 国产剧情一区在线| 亚洲va欧美va人人爽午夜| 欧美激情综合在线| 欧美一区二区三区性视频| 精彩视频一区二区| 亚洲欧美aⅴ...| 欧美成人福利视频| 亚洲精品在线电影| 久久综合色鬼综合色| 日韩一区二区视频在线观看| 色婷婷综合在线| 99精品在线观看视频| 成人91在线观看| 青青国产91久久久久久| 一区二区国产视频| 亚洲欧洲精品一区二区精品久久久| 欧美激情一区二区三区不卡| 福利电影一区二区三区| 日韩精品一区第一页| 香蕉久久夜色精品国产使用方法| 欧美伦理视频网站| 日本久久电影网| 91极品视觉盛宴| 欧美人xxxx| 日韩一区二区电影网| 日韩欧美国产一区二区在线播放 | 东方aⅴ免费观看久久av| 国产精品另类一区| 国产亚洲精久久久久久| 精品视频一区二区不卡| 性做久久久久久免费观看| 国产精品一区在线| 亚洲欧洲综合另类| 一二三四区精品视频| 久久亚洲二区三区| 国产精品第一页第二页第三页 | 一区二区三区在线视频观看58 | 日韩精品欧美精品| 性做久久久久久| 国产美女精品一区二区三区| 久久久亚洲精品石原莉奈| 99精品视频在线免费观看| 日本高清无吗v一区| 欧美一级理论性理论a| 一本大道av伊人久久综合| 色综合久久综合网欧美综合网| 日韩欧美精品三级| 欧美亚洲日本国产| 一本到一区二区三区| 日本免费在线视频不卡一不卡二| 精品av综合导航| 一区二区三区高清| 欧美日韩亚洲综合一区| 亚洲视频资源在线| 蜜桃精品视频在线| 日韩精品福利网| 6080午夜不卡| 91官网在线观看| 亚洲精品成人在线| 欧美高清在线精品一区| 亚洲精品在线观看视频| 日韩一卡二卡三卡四卡| 5858s免费视频成人| 欧美美女一区二区在线观看| 91成人在线免费观看| 99久久国产综合精品麻豆| 97久久久精品综合88久久| 成人免费视频视频| 99久久99久久精品免费看蜜桃| 高清免费成人av| gogo大胆日本视频一区| 99精品在线观看视频| 色女孩综合影院| 欧美视频一区在线| 91精品婷婷国产综合久久| 91.com视频| 日韩精品在线网站| 亚洲精品一区二区三区蜜桃下载 | 国产成人精品午夜视频免费| 丁香婷婷深情五月亚洲| 成人综合婷婷国产精品久久蜜臀| 大陆成人av片| 91在线porny国产在线看| 91国偷自产一区二区使用方法| 欧美视频三区在线播放| 日韩欧美久久一区| 国产日产欧美一区二区三区 | 亚洲综合丁香婷婷六月香| 亚洲成人一区二区| 久久精品噜噜噜成人88aⅴ| 国产精一区二区三区| 99国产欧美久久久精品| 欧美视频你懂的| 久久亚洲捆绑美女| 国产精品国产三级国产aⅴ原创| 一区二区三区四区激情| 精品无人区卡一卡二卡三乱码免费卡| 另类的小说在线视频另类成人小视频在线| 蜜桃视频一区二区| 国产黄色精品视频| 欧美日韩一级二级三级| 久久精品在线观看| 一区二区三区国产精华| 久久99这里只有精品| 不卡视频免费播放| 在线不卡a资源高清| 国产免费久久精品| 日韩黄色小视频| www.在线成人| 日韩亚洲欧美在线观看| 国产精品污污网站在线观看| 亚洲h精品动漫在线观看| 国产一区二区三区精品视频| 欧美影院午夜播放| 国产日韩欧美不卡| 五月天丁香久久| 成人久久18免费网站麻豆| 欧美老年两性高潮| 国产精品国产馆在线真实露脸 | 蜜臀久久久久久久| 91玉足脚交白嫩脚丫在线播放| 精品国产亚洲一区二区三区在线观看 | 久久久青草青青国产亚洲免观| 亚洲欧美偷拍另类a∨色屁股| 精品一二三四在线| 在线免费观看日本一区| 欧美激情综合五月色丁香| 免费观看91视频大全| 日本精品一区二区三区高清| 国产欧美一区二区精品秋霞影院| 婷婷综合五月天| 一本一道波多野结衣一区二区| 久久欧美一区二区| 日本成人在线电影网| 欧美中文字幕一区二区三区亚洲| 国产精品久久久久婷婷| 美女一区二区久久| 欧美视频在线一区二区三区 | 91在线视频免费观看| 精品电影一区二区三区 | 青青草原综合久久大伊人精品优势| 在线亚洲+欧美+日本专区| 国产精品传媒在线| 国产成人精品亚洲日本在线桃色| 亚洲精品在线观| 激情国产一区二区| 日韩精品中文字幕一区| 免费在线观看一区| 3atv在线一区二区三区| 日韩二区三区在线观看| 欧美日韩精品久久久| 亚洲一区免费在线观看| 91麻豆国产在线观看| 亚洲精选视频在线| 99国产精品99久久久久久| 中文字幕亚洲在| 色天天综合久久久久综合片| 亚洲综合在线观看视频| 在线观看国产91| 亚洲影视在线观看| 欧美日韩亚洲国产综合| 日本不卡一二三| 日韩免费看的电影| 激情综合五月婷婷| 国产嫩草影院久久久久| 色综合天天做天天爱| 一区二区三区在线影院| 欧美日韩高清在线| 久久成人免费网| 国产欧美精品一区二区色综合 | 一区二区欧美精品| 欧美丰满少妇xxxbbb| 毛片不卡一区二区| 亚洲国产经典视频| 国产999精品久久久久久| 亚洲国产另类av| 欧美一区在线视频| 国产一区二区主播在线| 国产色91在线| 一本大道久久精品懂色aⅴ | 国产喷白浆一区二区三区| 99久久精品国产精品久久| 亚洲综合在线五月| 日韩欧美国产麻豆| 成人精品一区二区三区四区 | 欧美日韩不卡在线|