initial upload
This commit is contained in:
14
archive/TetraGM/Commond_Line.h
Normal file
14
archive/TetraGM/Commond_Line.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#define ForGC "-gc"//ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
#define ForGS "-gs"//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
#define ForGGC "-ggc"//ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
#define ForGGS "-ggs"//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
#define ForMC "-mc"//ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>µĴ<C2B5><C4B4>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
#define ForMS "-ms"//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>µĴ<C2B5><C4B4>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
||||
#define ForMGC "-mgc"//ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>µĴ<C2B5><C4B4>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define ForMGS "-mgs"//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>µĴ<C2B5><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define VolumeElement "-v"//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
#define SurfaceElement "-s"//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
#define FILE "-f"//<2F>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MANUAL "-m"//<2F>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
||||
#define ATTRI "-a"//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ֵ
|
||||
#define OUTFILE "-o"//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
281
archive/TetraGM/Data_Func.h
Normal file
281
archive/TetraGM/Data_Func.h
Normal file
@@ -0,0 +1,281 @@
|
||||
#ifndef _DATA_FUNC_H
|
||||
#define _DATA_FUNC_H
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <string.h>
|
||||
#include <cmath>
|
||||
#include <iomanip>
|
||||
#include <ctime>
|
||||
#include <list>
|
||||
#include <omp.h>
|
||||
#include <map>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#define G0 6.67191e-3
|
||||
#define pi 3.1415926535897932384626433832795
|
||||
#define T0 50000
|
||||
#define DBL_MAX 1e+36
|
||||
using namespace std;
|
||||
|
||||
// ∏¡øΩ·ππ”Î∫Ø ˝
|
||||
struct point3d //∂®“ ∏¡øΩ·ππÃÂ
|
||||
{
|
||||
double x,y,z;
|
||||
};
|
||||
|
||||
point3d operator -(point3d a, point3d b)//÷ÿ‘ÿºı∫≈≤Ÿ◊˜∑˚◊˜”√”⁄ ∏¡ø
|
||||
{
|
||||
point3d m;
|
||||
m.x=a.x-b.x;
|
||||
m.y=a.y-b.y;
|
||||
m.z=a.z-b.z;
|
||||
return m;
|
||||
}
|
||||
|
||||
point3d operator *(int sign,point3d b)//÷ÿ‘ÿ≥À∫≈≤Ÿ◊˜∑˚◊˜”√”⁄ ∏¡ø
|
||||
{
|
||||
point3d m;
|
||||
m.x=sign*b.x;
|
||||
m.y=sign*b.y;
|
||||
m.z=sign*b.z;
|
||||
return m;
|
||||
}
|
||||
|
||||
bool operator ==(point3d a, point3d b)//÷ÿ‘ÿ¬flº≠µ»≤Ÿ◊˜∑˚◊˜”√”⁄ ∏¡ø
|
||||
{
|
||||
if(a.x==b.x&&a.y==b.y&&a.z==b.z)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else return 0;
|
||||
}
|
||||
|
||||
point3d point3d_martix(point3d a,double *m)//∂®“ ∏¡ø«∞≥Àæÿ’Û
|
||||
{
|
||||
point3d v;
|
||||
double ma[3][3];
|
||||
for(int i=0;i<3;i++)
|
||||
{
|
||||
for(int j=0;j<3;j++)
|
||||
{
|
||||
ma[i][j] = *(m+i*3+j);
|
||||
}
|
||||
}
|
||||
v.x = a.x*ma[0][0]+a.y*ma[1][0]+a.z*ma[2][0];
|
||||
v.y = a.x*ma[0][1]+a.y*ma[1][1]+a.z*ma[2][1];
|
||||
v.z = a.x*ma[0][2]+a.y*ma[1][2]+a.z*ma[2][2];
|
||||
return v;
|
||||
}
|
||||
|
||||
point3d martix_point3d(point3d a,double *m)//∂®“ ∏¡ø∫Û≥Àæÿ’Û
|
||||
{
|
||||
point3d v;
|
||||
double ma[3][3];
|
||||
for(int i=0;i<3;i++)
|
||||
{
|
||||
for(int j=0;j<3;j++)
|
||||
{
|
||||
ma[i][j] = *(m+i*3+j);
|
||||
}
|
||||
}
|
||||
v.x = a.x*ma[0][0]+a.y*ma[0][1]+a.z*ma[0][2];
|
||||
v.y = a.x*ma[1][0]+a.y*ma[1][1]+a.z*ma[1][2];
|
||||
v.z = a.x*ma[2][0]+a.y*ma[2][1]+a.z*ma[2][2];
|
||||
return v;
|
||||
}
|
||||
|
||||
double dot(point3d a, point3d b)//∂®“ ∏¡øµ„≥À
|
||||
{
|
||||
return a.x*b.x+a.y*b.y+a.z*b.z;
|
||||
}
|
||||
|
||||
point3d cross(point3d a,point3d b)//∂®“ ∏¡ø≤Ê≥À
|
||||
{
|
||||
point3d v;
|
||||
v.x = a.y*b.z-a.z*b.y;
|
||||
v.y = a.z*b.x-a.x*b.z;
|
||||
v.z = a.x*b.y-a.y*b.x;
|
||||
return v;
|
||||
}
|
||||
|
||||
double* kron_v(point3d a,point3d b)//∂®“ ∏¡ø’≈¡øª˝
|
||||
{
|
||||
double t[3][3];
|
||||
t[0][0]=a.x*b.x; t[0][1]=a.x*b.y; t[0][2]=a.x*b.z;
|
||||
t[1][0]=a.y*b.x; t[1][1]=a.y*b.y; t[1][2]=a.y*b.z;
|
||||
t[2][0]=a.z*b.x; t[2][1]=a.z*b.y; t[2][2]=a.z*b.z;
|
||||
return t[0];
|
||||
}
|
||||
|
||||
double L_point3d(point3d v)//«Û ∏¡øæ‡◊¯±Í‘≠µ„懿Î
|
||||
{
|
||||
return sqrt(v.x*v.x+v.y*v.y+v.z*v.z);
|
||||
}
|
||||
|
||||
double Dis_point3d(point3d a,point3d b)//«Û¡Ω∏ˆ ∏¡ø÷’∂À懿Î
|
||||
{
|
||||
return sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2)+pow(a.z-b.z,2));
|
||||
}
|
||||
|
||||
point3d nor_point3d(point3d v)//º∆À„“ª∏ˆ ∏¡øµƒµ•Œª ∏¡ø
|
||||
{
|
||||
double Length;
|
||||
point3d nor_v;
|
||||
Length = sqrt(v.x*v.x+v.y*v.y+v.z*v.z);
|
||||
nor_v.x = v.x/Length;
|
||||
nor_v.y = v.y/Length;
|
||||
nor_v.z = v.z/Length;
|
||||
return nor_v;
|
||||
}
|
||||
//æÿ’Û∫Ø ˝
|
||||
double *martix_martix(double *a,double *b)//æÿ’Ûœ‡≥Àa*b
|
||||
{
|
||||
double m[3][3],t[3][3],r[3][3];
|
||||
int i,j;
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
for(j=0;j<3;j++)
|
||||
{
|
||||
t[i][j] = *(a+i*3+j);
|
||||
r[i][j] = *(b+i*3+j);
|
||||
}
|
||||
}
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
for(j=0;j<3;j++)
|
||||
{
|
||||
m[i][j] = t[i][0]*r[0][j]+t[i][1]*r[1][j]+t[i][2]*r[2][j];
|
||||
}
|
||||
}
|
||||
return m[0];
|
||||
}
|
||||
|
||||
double *martix_T(double *a)//æÿ’Û◊™÷√
|
||||
{
|
||||
double m[3][3],r[3][3];
|
||||
int i,j;
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
for(j=0;j<3;j++)
|
||||
{
|
||||
r[i][j] = *(a+i*3+j);
|
||||
}
|
||||
}
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
for(j=0;j<3;j++)
|
||||
{
|
||||
m[i][j] = r[j][i];
|
||||
}
|
||||
}
|
||||
return m[0];
|
||||
}
|
||||
|
||||
// ˝æ›Ω·ππ”Î≤Ÿ◊˜
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
struct F//√Ê’≈¡øª˝
|
||||
{
|
||||
double kron[3][3];
|
||||
};
|
||||
struct E//±fl’≈¡øª˝
|
||||
{
|
||||
double kron[3][3];
|
||||
};
|
||||
struct tetra //∂®“ÂÀƒ√ÊÃÂΩ·ππÃÂ
|
||||
{
|
||||
int No;//Àƒ√ÊÖÚ∫≈
|
||||
int ver[4];//œ‡”¶Àƒ√ÊÃÂ∂•µ„–Ú∫≈
|
||||
int ordered_ver[4][3];//≈≈–Ú∫ÛµƒÀƒ∏ˆ√ʵƒµ„À˜“˝∫≈
|
||||
double *attribute;//Àƒ√Êàٖ‘÷∏’Î
|
||||
F F_kron[4];//Àƒ√ÊÃÂ√Ê’≈¡øª˝
|
||||
E E_kron[6];//Àƒ√Êñfl’≈¡øª˝
|
||||
double E_len[6];//Àƒ√Êñfl≥§∂»
|
||||
};
|
||||
typedef list<tetra> tetra_list;
|
||||
|
||||
struct vertex //∂®“Â∂•µ„Ω·ππÃÂ
|
||||
{
|
||||
int No;//∂•µ„–Ú∫≈
|
||||
point3d vt;;//∂•µ„◊¯±Í
|
||||
};
|
||||
|
||||
struct edge
|
||||
{
|
||||
int No;
|
||||
int ver[2];
|
||||
int nature;
|
||||
double length;
|
||||
double E[3][3];
|
||||
};
|
||||
typedef list<edge> edge_list;
|
||||
|
||||
struct face
|
||||
{
|
||||
int No;
|
||||
int ver[3];
|
||||
int nature;
|
||||
double F[3][3];
|
||||
};
|
||||
typedef list<face> face_list;
|
||||
|
||||
struct sphere_point//«Ú◊¯±Íµ„Ω·ππÃÂ
|
||||
{
|
||||
double phi,thet,radius;
|
||||
};
|
||||
|
||||
point3d SCS2CCS(sphere_point p1)//«Ú◊¯±Í◊™÷±Ω«◊¯±Í
|
||||
{
|
||||
point3d v;
|
||||
v.x = p1.radius*sin((0.5-p1.thet/180.0)*pi)*cos((2.0+p1.phi/180.0)*pi);
|
||||
v.y = p1.radius*sin((0.5-p1.thet/180.0)*pi)*sin((2.0+p1.phi/180.0)*pi);
|
||||
v.z = p1.radius*cos((0.5-p1.thet/180.0)*pi);
|
||||
return v;
|
||||
}
|
||||
|
||||
void find_left(int &L1,int &L2,int e,int e2)
|
||||
{
|
||||
for(int i=0;i<4;i++)
|
||||
{
|
||||
for(int j=0;j<4;j++)
|
||||
{
|
||||
if(i!=j&&i!=e&&i!=e2&&j!=e&&j!=e2&&i<j)
|
||||
{
|
||||
L1=i;
|
||||
L2=j;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int re_order(point3d refer,point3d point1,point3d &point2,point3d &point3)
|
||||
{
|
||||
point3d v12=point2-point1;
|
||||
point3d v23=point3-point2;
|
||||
point3d v_ref=refer-point1;
|
||||
|
||||
point3d v_nor = cross(v12,v23);
|
||||
|
||||
if(dot(v_ref,v_nor)>0)
|
||||
{
|
||||
point3d temp;
|
||||
temp=point2;point2=point3;point3=temp;
|
||||
return 1;
|
||||
}
|
||||
else return 0;
|
||||
}
|
||||
|
||||
void re_order2(point3d v1,point3d v2,point3d &ref1,point3d &ref2)
|
||||
{
|
||||
point3d v12=v2-v1;
|
||||
point3d v1ref1=ref1-v1;
|
||||
point3d v1ref2=ref2-v1;
|
||||
point3d nor_v121ref1=cross(v12,v1ref1);
|
||||
if(dot(nor_v121ref1,v1ref2)>0)
|
||||
{
|
||||
point3d temp;
|
||||
temp=ref1;ref1=ref2;ref2=temp;
|
||||
}
|
||||
}
|
||||
#endif
|
1124
archive/TetraGM/Tetra_G.h
Normal file
1124
archive/TetraGM/Tetra_G.h
Normal file
File diff suppressed because it is too large
Load Diff
429
archive/TetraGM/main.cpp
Normal file
429
archive/TetraGM/main.cpp
Normal file
@@ -0,0 +1,429 @@
|
||||
/*
|
||||
TetraGM4.0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
2015/11/12
|
||||
Ϊ<><CEAA><EFBFBD><EFBFBD>֮ǰ<D6AE>汾<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><CCA3><EFBFBD>4.0<EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>
|
||||
ͨ<EFBFBD><EFBFBD>ģ<EFBFBD>ͶԱ<EFBFBD>ʵ<EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ4.0<EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD>ʺ<EFBFBD><EFBFBD>벢<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD>δ<EFBFBD>ﵽ<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ÿһ<EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ
|
||||
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.msh<73>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0>ͻ<EFBFBD>ƿڡ<C6BF>
|
||||
2015/11/13
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i5<69><35>4G<34>ڴ<EFBFBD>ƽ̨<C6BD><CCA8>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԼΪԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD>ȡ<EFBFBD>ø<EFBFBD><EFBFBD>õijɼ<EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD>
|
||||
point3d<33><64>ʸ<EFBFBD><CAB8><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣨x,y,z<><7A>
|
||||
sphere_point<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD>γֵ<CEB3><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뾶
|
||||
vertex<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
edge<67><65><EFBFBD>߽ṹ<DFBD>壩<EFBFBD><E5A3A9><EFBFBD>ߵı<DFB5><C4B1>ţ<EFBFBD><C5A3>ߵĶ<DFB5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>ߵij<DFB5><C4B3>ȣ<EFBFBD><C8A3>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E
|
||||
face<63><65><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD>壩<EFBFBD><E5A3A9><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F
|
||||
tetra<72><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD>壩<EFBFBD><E5A3A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>⺯<EFBFBD><E2BAAF><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD>ã<EFBFBD>
|
||||
<20>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD><45><EFBFBD>ߵij<DFB5><C4B3>ȣ<EFBFBD>F<EFBFBD><46>E<EFBFBD><45><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵĹ<C7B5><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣩
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD>Data_Func.h<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<D2AA>õ<EFBFBD><C3B5><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD>㺯<EFBFBD><E3BAAF>
|
||||
Commond_Line.h<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>й涨<D0B9><E6B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
res_reg.h<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
Tetra_G.h<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Tetra_M.h<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴ų<CBB4><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
main.cppʶ<70><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEA3AC>ȡ<EFBFBD><C8A1>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
||||
*/
|
||||
|
||||
#include "Tetra_G.h"
|
||||
#include "Commond_Line.h"
|
||||
|
||||
int caltype = NULL;//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>
|
||||
int fietype = NULL;//<2F>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int attritype = NULL;//Ԫ<><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int elementtype = NULL;//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
int space_num;//<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>пո<D0BF><D5B8>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
double attri[3];//Ԫ<><D4AA><EFBFBD><EFBFBD>
|
||||
double ob_info[7];//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
string _attri;
|
||||
string meshname;
|
||||
string fiename;
|
||||
string savename;
|
||||
stringstream stemp;
|
||||
|
||||
void disp_info()
|
||||
{
|
||||
cout<<"tetragm 0.5.0 - forward modeling of gravity and magnetic data and their gradient data based on unstructured grid"<<endl<<endl
|
||||
<<"usage: tetragm -gc|ggc|gs|ggs|mc|ms|mgc|mgs -a[<para1>/<para2>/<para3>/<para4>] -v<mesh-file>|s<mesh-file>"<<endl
|
||||
<<" -F<fie-file>|M[<xmin>/<dx>/<xmax>/<ymin>/<dy>/<ymax>/<altitude>][<lati_min>/<d_lati>/<lati_max>/"<<endl
|
||||
<<" <longi_min>/<d_longi>/<longi_max>/<radius>] -o<output-file>"<<endl
|
||||
<<" -gc forward modeling gravity data in Cartesian coordinate"<<endl
|
||||
<<" -ggc forward modeling gravity gradient data in Cartesian coordinate"<<endl
|
||||
<<" -gs forward modeling gravity data in spherical coordinate"<<endl
|
||||
<<" -ggs forward modeling gravity gradient data in spherical coordinate"<<endl
|
||||
<<" -mc forward modeling magnetic data in Cartesian coordinate"<<endl
|
||||
<<" -mgc forward modeling magnetic gradient data in Cartesian coordinate"<<endl
|
||||
<<" -ms forward modeling magnetic data in spherical coordinate"<<endl
|
||||
<<" -mgs forward modeling magnetic gradient data in spherical coordinate"<<endl
|
||||
<<" -a define cells' physical attributes. If no arguments are followed behind -a, it means that the cells'"<<endl
|
||||
<<" attributes are defined by the mesh-file individually. For forward modeling gravity and its gradient"<<endl
|
||||
<<" data, density is the only parameter the program need. In this case, you just need to specify 'para1'."<<endl
|
||||
<<" For example '1.0///'. For forward modeling magnetic and its gradient data. Parameters are as follow"<<endl
|
||||
<<" para1 "<<endl
|
||||
<<"-Vstring: use volume element, followed by mesh file's name"<<endl
|
||||
<<"-Sstring: use surface element, followed by mesh file's name"<<endl
|
||||
<<"-Fstring: read observation points from a .fie file, followed by file name"<<endl
|
||||
<<"-Mdouble/double/double/double/double/double/double: user defined observation points, format:"<<endl
|
||||
<<"xmin/dx/xmax/ymin/dy/ymax/altitude"<<endl
|
||||
<<"lati_min/d_lati/lati_max/longi_min/d_longi/longi_max/radius"<<endl
|
||||
<<"-Ostring: Output file, followed by file name"<<endl;
|
||||
}
|
||||
|
||||
int typeget(char *str, const char* str2,string &str3)
|
||||
{
|
||||
char* strp = strstr(str, str2); // <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>str<74>в<EFBFBD><D0B2><EFBFBD>str2<72><32>
|
||||
if (strp == NULL)
|
||||
{
|
||||
return 0; // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
string temp = str;
|
||||
str3=temp.substr(strlen(str2));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>str2<72><32><EFBFBD><EFBFBD><EFBFBD>Ӿ<EFBFBD>
|
||||
return 1;
|
||||
}
|
||||
|
||||
string& replace_all(string& str,const string& old_value,const string& new_value,int &num) //<2F>滻str<74><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lod_valueΪnew_value,<2C><><EFBFBD>ر<EFBFBD><D8B1>滻<EFBFBD><E6BBBB>lod_value<75>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
{
|
||||
int count = 0;
|
||||
for(string::size_type pos(0);pos!=string::npos;pos+=new_value.length()){
|
||||
if((pos=str.find(old_value,pos))!=string::npos){
|
||||
str.replace(pos,old_value.length(),new_value);
|
||||
count++;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
num = count;
|
||||
return str;
|
||||
}
|
||||
|
||||
/*
|
||||
caltype -GC:1 -GGC:2 -GS:3 -GGS:4 -MC:5 -MGC:6 -MS:7 -MGS:8
|
||||
elementtype -V:1 -S:2
|
||||
attritype -F:1 -M:2
|
||||
*/
|
||||
struct Call_func
|
||||
{
|
||||
int callback_func(int caltype,int elementtype,string filename,string fiename,string savename)
|
||||
{
|
||||
switch (caltype)
|
||||
{
|
||||
case 1:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,fiename,savename)) return 1;
|
||||
}break;
|
||||
case 2:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,fiename,savename)) return 1;
|
||||
}break;
|
||||
case 3:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,fiename,savename)) return 1;
|
||||
}break;
|
||||
case 4:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,fiename,savename)) return 1;
|
||||
}break;
|
||||
case 5:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 6:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 7:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 8:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
default:{
|
||||
cout<<"An error picked at 'callback_func()', program stopped...";
|
||||
exit(0);
|
||||
}break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int callback_func(int caltype,int elementtype,string filename,double* ob_info,string savename)
|
||||
{
|
||||
switch (caltype)
|
||||
{
|
||||
case 1:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,ob_info,savename)) return 1;
|
||||
}break;
|
||||
case 2:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,ob_info,savename)) return 1;
|
||||
}break;
|
||||
case 3:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,ob_info,savename)) return 1;
|
||||
}break;
|
||||
case 4:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,ob_info,savename)) return 1;
|
||||
}break;
|
||||
case 5:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 6:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 7:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 8:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
default:{
|
||||
cout<<"An error picked at 'callback_func()', program stopped...";
|
||||
exit(0);
|
||||
}break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int callback_func(int caltype,int elementtype,string filename,string fiename,string savename,double* attri)
|
||||
{
|
||||
switch (caltype)
|
||||
{
|
||||
case 1:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,fiename,savename,attri)) return 1;
|
||||
}break;
|
||||
case 2:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,fiename,savename,attri)) return 1;
|
||||
}break;
|
||||
case 3:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,fiename,savename,attri)) return 1;
|
||||
}break;
|
||||
case 4:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,fiename,savename,attri)) return 1;
|
||||
}break;
|
||||
case 5:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 6:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 7:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 8:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
default:{
|
||||
cout<<"An error picked at 'callback_func()', program stopped...";
|
||||
exit(0);
|
||||
}break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int callback_func(int caltype,int elementtype,string filename,double* ob_info,string savename,double* attri)
|
||||
{
|
||||
switch (caltype)
|
||||
{
|
||||
case 1:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,ob_info,savename,attri)) return 1;
|
||||
}break;
|
||||
case 2:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,ob_info,savename,attri)) return 1;
|
||||
}break;
|
||||
case 3:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,ob_info,savename,attri)) return 1;
|
||||
}break;
|
||||
case 4:{
|
||||
Tetra_G _Project;
|
||||
if(_Project.info_taker_run(caltype,filename,ob_info,savename,attri)) return 1;
|
||||
}break;
|
||||
case 5:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 6:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 7:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
case 8:{
|
||||
cout<<"Unfished!"<<endl;
|
||||
}break;
|
||||
default:{
|
||||
cout<<"An error picked at 'callback_func()', program stopped...";
|
||||
exit(0);
|
||||
}break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
int main(int argc,char* argv[])
|
||||
{
|
||||
if(argc==1){
|
||||
disp_info();
|
||||
}
|
||||
else{
|
||||
Call_func Call;
|
||||
|
||||
for(int i=1;i<=argc-1;i++){
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>
|
||||
if(!strcmp(argv[i],ForGC)) caltype=1;
|
||||
else if(!strcmp(argv[i],ForGGC)) caltype=2;
|
||||
else if(!strcmp(argv[i],ForGS)) caltype=3;
|
||||
else if(!strcmp(argv[i],ForGGS)) caltype=4;
|
||||
else if(!strcmp(argv[i],ForMC)) caltype=5;
|
||||
else if(!strcmp(argv[i],ForMGC)) caltype=6;
|
||||
else if(!strcmp(argv[i],ForMS)) caltype=7;
|
||||
else if(!strcmp(argv[i],ForMGS)) caltype=8;
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD>Ҫ<EFBFBD>ͺ<EFBFBD>
|
||||
if(typeget(argv[i],ATTRI,_attri)){
|
||||
if(_attri!=""){
|
||||
attritype=2;
|
||||
replace_all(_attri,"/"," ",space_num);
|
||||
stemp.clear();
|
||||
stemp.str(_attri);
|
||||
if(space_num==3){
|
||||
for(int i=0;i<4;i++)
|
||||
{
|
||||
if(!(stemp>>attri[i])){
|
||||
attri[i]=DBL_MAX;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
cout<<"Insufficient attributes information, program stoped...";//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
}
|
||||
else attritype=1;//<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>Ԫ<EFBFBD><D4AA>Ϣ
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
if(typeget(argv[i],VolumeElement,meshname)){
|
||||
elementtype = 1;
|
||||
if(meshname==""){
|
||||
cout<<"No mesh file name, program stoped...";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
else if(typeget(argv[i],SurfaceElement,meshname)){
|
||||
elementtype = 2;
|
||||
if(meshname==""){
|
||||
cout<<"No mesh file name, program stoped...";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD>Ϣ
|
||||
if(typeget(argv[i],FILE,fiename)){
|
||||
fietype=1;
|
||||
if(fiename==""){
|
||||
cout<<"No observation points' information, program stoped...";//<2F>۲<DEB9><DBB2><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
else if(typeget(argv[i],MANUAL,fiename)){
|
||||
fietype=2;
|
||||
if(fiename==""){
|
||||
cout<<"No observation points' information, program stoped...";//<2F><><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
else{
|
||||
replace_all(fiename,"/"," ",space_num);
|
||||
stemp.clear();
|
||||
stemp.str(fiename);
|
||||
if(space_num==6){
|
||||
for(int i=0;i<7;i++)
|
||||
{
|
||||
if(!(stemp>>ob_info[i])){
|
||||
ob_info[i]=DBL_MAX;
|
||||
}
|
||||
}
|
||||
for(int i=0;i<7;i++)
|
||||
{
|
||||
if(ob_info[i]==DBL_MAX){
|
||||
cout<<"Wrong observation points' information, program stoped...";//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
if(ob_info[1]<0||ob_info[4]<0||ob_info[0]>ob_info[2]||ob_info[3]>ob_info[5]||(ob_info[0]+ob_info[1])>ob_info[2]||(ob_info[3]+ob_info[4])>ob_info[5]){
|
||||
cout<<"Wrong observation points' information, program stoped...";//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
else{
|
||||
cout<<"Wrong observation points' information, program stoped...";//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>۲<EFBFBD><DBB2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
if(typeget(argv[i],OUTFILE,savename)){
|
||||
if(savename==""){
|
||||
cout<<"No output file name, program stoped...";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(caltype==NULL||fietype==NULL||attritype==NULL||elementtype==NULL||savename==""){
|
||||
cout<<"Wrong commond line, program stoped...";
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if(fietype==1&&attritype==1){
|
||||
if(Call.callback_func(caltype,elementtype,meshname,fiename,savename)){
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
else if(fietype==1&&attritype==2){
|
||||
if(Call.callback_func(caltype,elementtype,meshname,fiename,savename,attri)){
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
else if(fietype==2&&attritype==1){
|
||||
if(Call.callback_func(caltype,elementtype,meshname,ob_info,savename)){
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
else if(fietype==2&&attritype==2){
|
||||
if(Call.callback_func(caltype,elementtype,meshname,ob_info,savename,attri)){
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
else{
|
||||
cout<<"A program error is detected, program stopped...";
|
||||
system("pause");
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
103
archive/TetraGM/res_reg.h
Normal file
103
archive/TetraGM/res_reg.h
Normal file
@@ -0,0 +1,103 @@
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#ifndef _RES_REG_H
|
||||
#define _RES_REG_H
|
||||
#include "Data_Func.h"
|
||||
|
||||
class res_reg
|
||||
{
|
||||
public:
|
||||
res_reg(int);
|
||||
~res_reg();
|
||||
int res_add(double *,int);
|
||||
int savedat(string,int,sphere_point *);
|
||||
int savedat(string,int,point3d *);
|
||||
int check(int);
|
||||
private:
|
||||
double *tempresult;
|
||||
};
|
||||
|
||||
res_reg::res_reg(int M)
|
||||
{
|
||||
tempresult = new double [M];
|
||||
for(int i=0;i<M;i++)
|
||||
{
|
||||
tempresult[i]=0;
|
||||
}
|
||||
}
|
||||
|
||||
res_reg::~res_reg()
|
||||
{
|
||||
if(tempresult) delete []tempresult;
|
||||
}
|
||||
|
||||
int res_reg::res_add(double *result,int M)
|
||||
{
|
||||
for(int i=0;i<M;i++)
|
||||
{
|
||||
tempresult[i]+=*(result+i);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int res_reg::savedat(string filename,int sum,sphere_point *fie)
|
||||
{
|
||||
ofstream fout;
|
||||
string tempname = filename + ".dat";
|
||||
const char* savename = tempname.c_str();
|
||||
fout.open(savename);
|
||||
if(!fout)
|
||||
{
|
||||
cout<<"can't create "<<savename<<endl;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout<<"saving "<<savename<<"..."<<endl;
|
||||
fout<<"Longitude(degree) Latitude(degree) Radius(m) Value"<<endl;
|
||||
for(int i=0;i<sum;i++)
|
||||
{
|
||||
fout<<setprecision(16)<<fie[i].phi<<" "<<fie[i].thet<<" "<<fie[i].radius<<" "<<tempresult[i]<<endl;
|
||||
}
|
||||
fout.close();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int res_reg::savedat(string filename,int sum,point3d *fie)
|
||||
{
|
||||
ofstream fout;
|
||||
string tempname = filename + ".dat";
|
||||
const char* savename = tempname.c_str();
|
||||
fout.open(savename);
|
||||
if(!fout)
|
||||
{
|
||||
cout<<"can't create "<<filename<<endl;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout<<"saving "<<filename<<"..."<<endl;
|
||||
//fout<<"X(m) Y(m) Z(m) Value"<<endl;
|
||||
for(int i=0;i<sum;i++)
|
||||
{
|
||||
//fout<<setprecision(16)<<fie[i].x<<" "<<fie[i].y<<" "<<fie[i].z<<" "<<tempresult[i]<<endl;
|
||||
fout<<setprecision(16)<<fie[i].x<<" "<<fie[i].y<<" "<<fie[i].z<<" "<<tempresult[i]<<endl;
|
||||
}
|
||||
fout.close();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int res_reg::check(int sum)
|
||||
{
|
||||
for(int i=0;i<sum;i++)
|
||||
{
|
||||
if(tempresult[i]!=tempresult[i])
|
||||
{
|
||||
cout<<"A non-numeric data is detected."<<endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
Reference in New Issue
Block a user