UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
any_elements.H
1 /* any_elements.H */
2 /* $Id: any_elements.H,v 2.21 2001/10/09 14:54:38 hoh Exp $ */
3 #ifndef __any_elements_H
4 #define __any_elements_H
5 
6 #include <mix/IntAr.H>
7 #include <mix/DoubleAr.H>
8 #include <mix/ObjectsAr.H>
9 #include <mix/geometry.H>
10 
11 #include "misc.H"
12 
13 // Вид границы: обычная, области моделирования, свободная поверхностьtypedef enum{NORMAL=0,MODEL=1,TOP=2, TEMP=3} border_flag; // Возможные типы волн - никакая либо какая-то ;) #define PM_NOKIND 0 #define PM_P 1 #define PM_SV 2 // Инкапсуляция геофизических параметров typedef struct{ double fVP; double fVS; double fDensity; double fAn_Azimuth; double fAn_Dip; double fAn_KP; double fAn_KS; } geophys_params; // Инкапсуляция данных для настрела лучей (еще добавим всяческой разности...) typedef struct{ double dAniz[3]; double dVP_Aniz; double dVS_Aniz; double*cl; double*cg; double*rt; } raytr_params; // Data incapsulation to store parallel model parameters class parallel_model_params{ public: DoubleAr pVP; DoubleAr pVS; DoubleAr pKP; DoubleAr pKS; DoubleAr xTop; DoubleAr yTop; DoubleAr zTop; double normal[3]; double *e,*d,*f,*h,*v,*ztop,*plr,*segm,*aux,*tgpsic; parallel_model_params () :e(NULL),d(NULL),f(NULL),h(NULL),v(NULL),ztop(NULL), plr(NULL),segm(NULL),aux(NULL),tgpsic(NULL) { clean(); }; ~parallel_model_params (){ if(NULL!=e) free(e); if(NULL!=d) free(d); if(NULL!=f) free(f); if(NULL!=h) free(h); if(NULL!=v) free(v); if(NULL!=ztop) free(ztop); if(NULL!=plr) free(plr); if(NULL!=segm) free(segm); if(NULL!=aux) free(aux); if(NULL!=tgpsic) free(tgpsic); }; void clean (){ pVP.clean(); pVS.clean(); pKP.clean(); pKS.clean(); xTop.clean(); yTop.clean(); zTop.clean(); }; void allocate_mem_buf (int count){ e=(double*) calloc(2*(count+1), sizeof(double)); d=(double*) calloc(2*(count+1), sizeof(double)); f=(double*) calloc(2*(count+1), sizeof(double)); h=(double*) calloc(2*(count+1), sizeof(double)); v=(double*) calloc(2*(count+1), sizeof(double)); ztop=(double*) calloc(2*(count+1), sizeof(double)); plr=(double*) calloc(2*(count+1), sizeof(double)); segm=(double*) calloc(2*(count+1), sizeof(double)); aux=(double*) calloc(2*(count+1), sizeof(double)); tgpsic=(double*) calloc(2*(count+1), sizeof(double)); }; }; /****** Элементы внутреннего представления модели ******/ // Произвольная гладкая поверхность - сплайн class any_spline{ protected: any_spline(){;}; }; typedef any_spline* p_any_spline; typedef ObjectsAr<p_any_spline> any_splines; // Произвольная граница ровно между двумя телами class any_border{ protected: border_flag bf; int iBodies[2]; p_any_spline psSpline; any_border(any_border &bCopy); any_border(int ib[2],const p_any_spline ps,border_flag bf); any_border(const p_any_spline ps,border_flag bf); public: int get_body(int ib) const; p_any_spline spline()const{return psSpline;} ; void set_bodies(int i1,int i2){iBodies[0]=i1;iBodies[1]=i2;}; border_flag kind() {return bf;}; int another_body(int iB){ if(iBodies[0]==iB)return iBodies[1];else if (iBodies[1]==iB)return iBodies[0]; return -1; }; ~any_border(); }; typedef any_border* p_any_border; typedef ObjectsAr<p_any_border> any_borders; // Тело как набор собственных границ class any_body{ protected: int iNumber; any_borders aBorders; IntAr aBordersNums; geophys_params gp; raytr_params rp; any_body(geophys_params _gp); any_body(any_body& bCopy); any_body(any_borders &ab,geophys_params gp); void swap_borders(int,int); void gp2rp(); public: Logic numerated_borders()const{ if(aBordersNums.count()>0) return TRUE; return FALSE; }; void clear_borders(); void set_number(int i){iNumber=i;}; int n_of_borders() const {return aBorders.count();}; void add_border(p_any_border pb){aBorders.addh(pb);}; ~any_body(); inline p_any_border get_border(int i)const ; geophys_params get_geophys() const {return gp;}; void set_geophys(geophys_params GP) {gp=GP; gp2rp();}; raytr_params get_raytr()const{return rp;}; Logic contains_border(p_any_border pb)const; // Оченно опасная функция, однако... void fix_numbers(const IntAr&aBorderNumbers); const IntAr& borders_numbers()const{return aBordersNums;}; // Выдает список номеров тел-соседей (кроме -1, ессно) IntAr neighbors(int iNumber) const; // Заменили одну границу на другую, если что - кинули исключение void change_border(p_any_border,p_any_border); // Отсортировать границы void sort_borders(); int number()const{return iNumber;}; void set_vp(double vp){gp.fVP=vp;gp2rp();}; void set_kp(double kp){gp.fAn_KP=kp;gp2rp();}; void set_vs(double vs){gp.fVS=vs;gp2rp();}; void set_ks(double ks){gp.fAn_KS=ks;gp2rp();}; const any_borders& borders() const {return aBorders;}; }; // Очень уж часто она вызывается... inline p_any_border any_body::get_border (int i)const{ // Проверки нафиг, пусть ObjectAr проверяет... #if 0 if((i>=aBorders.count())||(i<0)) return NULL; #endif return aBorders(i); }; typedef any_body* p_any_body; typedef ObjectsAr<p_any_body> any_bodies; // Элементы внешнего представления модели // Сплайн class any_ex_spline{ protected: any_ex_spline(){;}; }; // Граница class any_ex_border{ protected: border_flag bf; int iSpline; int iBodies[2]; any_ex_border(int ib[2], int is, border_flag _bf); any_ex_border(){iSpline=-1; bf=NORMAL; iBodies[0]=iBodies[1]=-5;}; public: int get_body(int ib) ; int spline()const {return iSpline;}; border_flag kind() {return bf;}; }; // Тело class any_ex_body{ protected: int iNumber; IntAr aBorders; geophys_params gp; raytr_params rp; any_ex_body(IntAr & ab, geophys_params const & gp, int in); any_ex_body(){;}; public: virtual int n_of_borders()const {return aBorders.count();}; int make_body(const IntAr& ab, const geophys_params & gp, const raytr_params & rp,int in); geophys_params get_geophys()const{return gp;}; raytr_params get_raytr()const{return rp;}; int get_border(int i); int number()const{return iNumber;}; }; #endif /* any_elements.H */ /* Melnikov George Y. 29-Sep-1998 */ /* ... */ /* Melnikov George Yu. 23-Nov-1999 */ /* ... */
14 typedef enum{NORMAL=0,MODEL=1,TOP=2, TEMP=3} border_flag;
15 
16 // Возможные типы волн - никакая либо какая-то ;)
17 #define PM_NOKIND 0
18 #define PM_P 1
19 #define PM_SV 2
20 
21 // Инкапсуляция геофизических параметров
22 typedef struct{
23  double fVP;
24  double fVS;
25  double fDensity;
26  double fAn_Azimuth;
27  double fAn_Dip;
28  double fAn_KP;
29  double fAn_KS;
31 
32 // Инкапсуляция данных для настрела лучей (еще добавим всяческой разности...)
33 typedef struct{
34  double dAniz[3];
35  double dVP_Aniz;
36  double dVS_Aniz;
37  double*cl;
38  double*cg;
39  double*rt;
40 } raytr_params;
41 
42 // Data incapsulation to store parallel model parameters
44 public:
45 
46  DoubleAr pVP;
47  DoubleAr pVS;
48  DoubleAr pKP;
49  DoubleAr pKS;
50  DoubleAr xTop;
51  DoubleAr yTop;
52  DoubleAr zTop;
53  double normal[3];
54  double *e,*d,*f,*h,*v,*ztop,*plr,*segm,*aux,*tgpsic;
55 
57  :e(NULL),d(NULL),f(NULL),h(NULL),v(NULL),ztop(NULL),
58  plr(NULL),segm(NULL),aux(NULL),tgpsic(NULL)
59  {
60  clean();
61  };
62 
64  if(NULL!=e) free(e);
65  if(NULL!=d) free(d);
66  if(NULL!=f) free(f);
67  if(NULL!=h) free(h);
68  if(NULL!=v) free(v);
69  if(NULL!=ztop) free(ztop);
70  if(NULL!=plr) free(plr);
71  if(NULL!=segm) free(segm);
72  if(NULL!=aux) free(aux);
73  if(NULL!=tgpsic) free(tgpsic);
74  };
75 
76  void clean (){
77  pVP.clean(); pVS.clean(); pKP.clean(); pKS.clean();
78  xTop.clean(); yTop.clean(); zTop.clean();
79  };
80 
81  void allocate_mem_buf (int count){
82  e=(double*) calloc(2*(count+1), sizeof(double));
83  d=(double*) calloc(2*(count+1), sizeof(double));
84  f=(double*) calloc(2*(count+1), sizeof(double));
85  h=(double*) calloc(2*(count+1), sizeof(double));
86  v=(double*) calloc(2*(count+1), sizeof(double));
87  ztop=(double*) calloc(2*(count+1), sizeof(double));
88  plr=(double*) calloc(2*(count+1), sizeof(double));
89  segm=(double*) calloc(2*(count+1), sizeof(double));
90  aux=(double*) calloc(2*(count+1), sizeof(double));
91  tgpsic=(double*) calloc(2*(count+1), sizeof(double));
92  };
93 };
94 
95 /****** Элементы внутреннего представления модели ******/
96 
97 // Произвольная гладкая поверхность - сплайнclass any_spline{ protected: any_spline(){;}; }; typedef any_spline* p_any_spline; typedef ObjectsAr<p_any_spline> any_splines; // Произвольная граница ровно между двумя телами class any_border{ protected: border_flag bf; int iBodies[2]; p_any_spline psSpline; any_border(any_border &bCopy); any_border(int ib[2],const p_any_spline ps,border_flag bf); any_border(const p_any_spline ps,border_flag bf); public: int get_body(int ib) const; p_any_spline spline()const{return psSpline;} ; void set_bodies(int i1,int i2){iBodies[0]=i1;iBodies[1]=i2;}; border_flag kind() {return bf;}; int another_body(int iB){ if(iBodies[0]==iB)return iBodies[1];else if (iBodies[1]==iB)return iBodies[0]; return -1; }; ~any_border(); }; typedef any_border* p_any_border; typedef ObjectsAr<p_any_border> any_borders; // Тело как набор собственных границ class any_body{ protected: int iNumber; any_borders aBorders; IntAr aBordersNums; geophys_params gp; raytr_params rp; any_body(geophys_params _gp); any_body(any_body& bCopy); any_body(any_borders &ab,geophys_params gp); void swap_borders(int,int); void gp2rp(); public: Logic numerated_borders()const{ if(aBordersNums.count()>0) return TRUE; return FALSE; }; void clear_borders(); void set_number(int i){iNumber=i;}; int n_of_borders() const {return aBorders.count();}; void add_border(p_any_border pb){aBorders.addh(pb);}; ~any_body(); inline p_any_border get_border(int i)const ; geophys_params get_geophys() const {return gp;}; void set_geophys(geophys_params GP) {gp=GP; gp2rp();}; raytr_params get_raytr()const{return rp;}; Logic contains_border(p_any_border pb)const; // Оченно опасная функция, однако... void fix_numbers(const IntAr&aBorderNumbers); const IntAr& borders_numbers()const{return aBordersNums;}; // Выдает список номеров тел-соседей (кроме -1, ессно) IntAr neighbors(int iNumber) const; // Заменили одну границу на другую, если что - кинули исключение void change_border(p_any_border,p_any_border); // Отсортировать границы void sort_borders(); int number()const{return iNumber;}; void set_vp(double vp){gp.fVP=vp;gp2rp();}; void set_kp(double kp){gp.fAn_KP=kp;gp2rp();}; void set_vs(double vs){gp.fVS=vs;gp2rp();}; void set_ks(double ks){gp.fAn_KS=ks;gp2rp();}; const any_borders& borders() const {return aBorders;}; }; // Очень уж часто она вызывается... inline p_any_border any_body::get_border (int i)const{ // Проверки нафиг, пусть ObjectAr проверяет... #if 0 if((i>=aBorders.count())||(i<0)) return NULL; #endif return aBorders(i); }; typedef any_body* p_any_body; typedef ObjectsAr<p_any_body> any_bodies; // Элементы внешнего представления модели // Сплайн class any_ex_spline{ protected: any_ex_spline(){;}; }; // Граница class any_ex_border{ protected: border_flag bf; int iSpline; int iBodies[2]; any_ex_border(int ib[2], int is, border_flag _bf); any_ex_border(){iSpline=-1; bf=NORMAL; iBodies[0]=iBodies[1]=-5;}; public: int get_body(int ib) ; int spline()const {return iSpline;}; border_flag kind() {return bf;}; }; // Тело class any_ex_body{ protected: int iNumber; IntAr aBorders; geophys_params gp; raytr_params rp; any_ex_body(IntAr & ab, geophys_params const & gp, int in); any_ex_body(){;}; public: virtual int n_of_borders()const {return aBorders.count();}; int make_body(const IntAr& ab, const geophys_params & gp, const raytr_params & rp,int in); geophys_params get_geophys()const{return gp;}; raytr_params get_raytr()const{return rp;}; int get_border(int i); int number()const{return iNumber;}; }; #endif /* any_elements.H */ /* Melnikov George Y. 29-Sep-1998 */ /* ... */ /* Melnikov George Yu. 23-Nov-1999 */ /* ... */
98 class any_spline{
99 protected:
100  any_spline(){;};
101 };
102 
103 typedef any_spline* p_any_spline;
105 
106 // Произвольная граница ровно между двумя телами class any_border{ protected: border_flag bf; int iBodies[2]; p_any_spline psSpline; any_border(any_border &bCopy); any_border(int ib[2],const p_any_spline ps,border_flag bf); any_border(const p_any_spline ps,border_flag bf); public: int get_body(int ib) const; p_any_spline spline()const{return psSpline;} ; void set_bodies(int i1,int i2){iBodies[0]=i1;iBodies[1]=i2;}; border_flag kind() {return bf;}; int another_body(int iB){ if(iBodies[0]==iB)return iBodies[1];else if (iBodies[1]==iB)return iBodies[0]; return -1; }; ~any_border(); }; typedef any_border* p_any_border; typedef ObjectsAr<p_any_border> any_borders; // Тело как набор собственных границ class any_body{ protected: int iNumber; any_borders aBorders; IntAr aBordersNums; geophys_params gp; raytr_params rp; any_body(geophys_params _gp); any_body(any_body& bCopy); any_body(any_borders &ab,geophys_params gp); void swap_borders(int,int); void gp2rp(); public: Logic numerated_borders()const{ if(aBordersNums.count()>0) return TRUE; return FALSE; }; void clear_borders(); void set_number(int i){iNumber=i;}; int n_of_borders() const {return aBorders.count();}; void add_border(p_any_border pb){aBorders.addh(pb);}; ~any_body(); inline p_any_border get_border(int i)const ; geophys_params get_geophys() const {return gp;}; void set_geophys(geophys_params GP) {gp=GP; gp2rp();}; raytr_params get_raytr()const{return rp;}; Logic contains_border(p_any_border pb)const; // Оченно опасная функция, однако... void fix_numbers(const IntAr&aBorderNumbers); const IntAr& borders_numbers()const{return aBordersNums;}; // Выдает список номеров тел-соседей (кроме -1, ессно) IntAr neighbors(int iNumber) const; // Заменили одну границу на другую, если что - кинули исключение void change_border(p_any_border,p_any_border); // Отсортировать границы void sort_borders(); int number()const{return iNumber;}; void set_vp(double vp){gp.fVP=vp;gp2rp();}; void set_kp(double kp){gp.fAn_KP=kp;gp2rp();}; void set_vs(double vs){gp.fVS=vs;gp2rp();}; void set_ks(double ks){gp.fAn_KS=ks;gp2rp();}; const any_borders& borders() const {return aBorders;}; }; // Очень уж часто она вызывается... inline p_any_border any_body::get_border (int i)const{ // Проверки нафиг, пусть ObjectAr проверяет... #if 0 if((i>=aBorders.count())||(i<0)) return NULL; #endif return aBorders(i); }; typedef any_body* p_any_body; typedef ObjectsAr<p_any_body> any_bodies; // Элементы внешнего представления модели // Сплайн class any_ex_spline{ protected: any_ex_spline(){;}; }; // Граница class any_ex_border{ protected: border_flag bf; int iSpline; int iBodies[2]; any_ex_border(int ib[2], int is, border_flag _bf); any_ex_border(){iSpline=-1; bf=NORMAL; iBodies[0]=iBodies[1]=-5;}; public: int get_body(int ib) ; int spline()const {return iSpline;}; border_flag kind() {return bf;}; }; // Тело class any_ex_body{ protected: int iNumber; IntAr aBorders; geophys_params gp; raytr_params rp; any_ex_body(IntAr & ab, geophys_params const & gp, int in); any_ex_body(){;}; public: virtual int n_of_borders()const {return aBorders.count();}; int make_body(const IntAr& ab, const geophys_params & gp, const raytr_params & rp,int in); geophys_params get_geophys()const{return gp;}; raytr_params get_raytr()const{return rp;}; int get_border(int i); int number()const{return iNumber;}; }; #endif /* any_elements.H */ /* Melnikov George Y. 29-Sep-1998 */ /* ... */ /* Melnikov George Yu. 23-Nov-1999 */ /* ... */
107 
109 protected:
110  border_flag bf;
111  int iBodies[2];
112  p_any_spline psSpline;
113  any_border(any_border &bCopy);
114  any_border(int ib[2],const p_any_spline ps,border_flag bf);
115  any_border(const p_any_spline ps,border_flag bf);
116 public:
117  int get_body(int ib) const;
118  p_any_spline spline()const{return psSpline;} ;
119  void set_bodies(int i1,int i2){iBodies[0]=i1;iBodies[1]=i2;};
120  border_flag kind() {return bf;};
121  int another_body(int iB){
122  if(iBodies[0]==iB)return iBodies[1];else
123  if (iBodies[1]==iB)return iBodies[0];
124  return -1;
125  };
126  ~any_border();
127 };
128 
129 typedef any_border* p_any_border;
131 
132 
133 // Тело как набор собственных границ
134 class any_body{
135 protected:
136  int iNumber;
137  any_borders aBorders;
138  IntAr aBordersNums;
139  geophys_params gp;
140  raytr_params rp;
142  any_body(any_body& bCopy);
144  void swap_borders(int,int);
145  void gp2rp();
146 public:
147  Logic numerated_borders()const{
148  if(aBordersNums.count()>0)
149  return TRUE;
150  return FALSE;
151  };
152  void clear_borders();
153  void set_number(int i){iNumber=i;};
154  int n_of_borders() const {return aBorders.count();};
155  void add_border(p_any_border pb){aBorders.addh(pb);};
156  ~any_body();
157  inline p_any_border get_border(int i)const ;
158  geophys_params get_geophys() const {return gp;};
159  void set_geophys(geophys_params GP) {gp=GP; gp2rp();};
160  raytr_params get_raytr()const{return rp;};
161  Logic contains_border(p_any_border pb)const;
162 
163  // Оченно опасная функция, однако...
164  void fix_numbers(const IntAr&aBorderNumbers);
165  const IntAr& borders_numbers()const{return aBordersNums;};
166  // Выдает список номеров тел-соседей (кроме -1, ессно)
167  IntAr neighbors(int iNumber) const;
168 
169  // Заменили одну границу на другую, если что - кинули исключение void change_border(p_any_border,p_any_border); // Отсортировать границы void sort_borders(); int number()const{return iNumber;}; void set_vp(double vp){gp.fVP=vp;gp2rp();}; void set_kp(double kp){gp.fAn_KP=kp;gp2rp();}; void set_vs(double vs){gp.fVS=vs;gp2rp();}; void set_ks(double ks){gp.fAn_KS=ks;gp2rp();}; const any_borders& borders() const {return aBorders;}; }; // Очень уж часто она вызывается... inline p_any_border any_body::get_border (int i)const{ // Проверки нафиг, пусть ObjectAr проверяет... #if 0 if((i>=aBorders.count())||(i<0)) return NULL; #endif return aBorders(i); }; typedef any_body* p_any_body; typedef ObjectsAr<p_any_body> any_bodies; // Элементы внешнего представления модели // Сплайн class any_ex_spline{ protected: any_ex_spline(){;}; }; // Граница class any_ex_border{ protected: border_flag bf; int iSpline; int iBodies[2]; any_ex_border(int ib[2], int is, border_flag _bf); any_ex_border(){iSpline=-1; bf=NORMAL; iBodies[0]=iBodies[1]=-5;}; public: int get_body(int ib) ; int spline()const {return iSpline;}; border_flag kind() {return bf;}; }; // Тело class any_ex_body{ protected: int iNumber; IntAr aBorders; geophys_params gp; raytr_params rp; any_ex_body(IntAr & ab, geophys_params const & gp, int in); any_ex_body(){;}; public: virtual int n_of_borders()const {return aBorders.count();}; int make_body(const IntAr& ab, const geophys_params & gp, const raytr_params & rp,int in); geophys_params get_geophys()const{return gp;}; raytr_params get_raytr()const{return rp;}; int get_border(int i); int number()const{return iNumber;}; }; #endif /* any_elements.H */ /* Melnikov George Y. 29-Sep-1998 */ /* ... */ /* Melnikov George Yu. 23-Nov-1999 */ /* ... */
170  void change_border(p_any_border,p_any_border);
171 
172  // Отсортировать границы void sort_borders(); int number()const{return iNumber;}; void set_vp(double vp){gp.fVP=vp;gp2rp();}; void set_kp(double kp){gp.fAn_KP=kp;gp2rp();}; void set_vs(double vs){gp.fVS=vs;gp2rp();}; void set_ks(double ks){gp.fAn_KS=ks;gp2rp();}; const any_borders& borders() const {return aBorders;}; }; // Очень уж часто она вызывается... inline p_any_border any_body::get_border (int i)const{ // Проверки нафиг, пусть ObjectAr проверяет... #if 0 if((i>=aBorders.count())||(i<0)) return NULL; #endif return aBorders(i); }; typedef any_body* p_any_body; typedef ObjectsAr<p_any_body> any_bodies; // Элементы внешнего представления модели // Сплайн class any_ex_spline{ protected: any_ex_spline(){;}; }; // Граница class any_ex_border{ protected: border_flag bf; int iSpline; int iBodies[2]; any_ex_border(int ib[2], int is, border_flag _bf); any_ex_border(){iSpline=-1; bf=NORMAL; iBodies[0]=iBodies[1]=-5;}; public: int get_body(int ib) ; int spline()const {return iSpline;}; border_flag kind() {return bf;}; }; // Тело class any_ex_body{ protected: int iNumber; IntAr aBorders; geophys_params gp; raytr_params rp; any_ex_body(IntAr & ab, geophys_params const & gp, int in); any_ex_body(){;}; public: virtual int n_of_borders()const {return aBorders.count();}; int make_body(const IntAr& ab, const geophys_params & gp, const raytr_params & rp,int in); geophys_params get_geophys()const{return gp;}; raytr_params get_raytr()const{return rp;}; int get_border(int i); int number()const{return iNumber;}; }; #endif /* any_elements.H */ /* Melnikov George Y. 29-Sep-1998 */ /* ... */ /* Melnikov George Yu. 23-Nov-1999 */ /* ... */
173  void sort_borders();
174  int number()const{return iNumber;};
175 
176  void set_vp(double vp){gp.fVP=vp;gp2rp();};
177  void set_kp(double kp){gp.fAn_KP=kp;gp2rp();};
178  void set_vs(double vs){gp.fVS=vs;gp2rp();};
179  void set_ks(double ks){gp.fAn_KS=ks;gp2rp();};
180 
181  const any_borders& borders() const {return aBorders;};
182 };
183 
184 // Очень уж часто она вызывается...
185 inline p_any_border any_body::get_border (int i)const{
186  // Проверки нафиг, пусть ObjectAr проверяет...
187 #if 0
188  if((i>=aBorders.count())||(i<0))
189  return NULL;
190 #endif
191  return aBorders(i);
192 };
193 
194 
195 typedef any_body* p_any_body;
197 
198 // Элементы внешнего представления модели
199 
200 // Сплайн
202 protected:
203  any_ex_spline(){;};
204 };
205 
206 // Границаclass any_ex_border{ protected: border_flag bf; int iSpline; int iBodies[2]; any_ex_border(int ib[2], int is, border_flag _bf); any_ex_border(){iSpline=-1; bf=NORMAL; iBodies[0]=iBodies[1]=-5;}; public: int get_body(int ib) ; int spline()const {return iSpline;}; border_flag kind() {return bf;}; }; // Тело class any_ex_body{ protected: int iNumber; IntAr aBorders; geophys_params gp; raytr_params rp; any_ex_body(IntAr & ab, geophys_params const & gp, int in); any_ex_body(){;}; public: virtual int n_of_borders()const {return aBorders.count();}; int make_body(const IntAr& ab, const geophys_params & gp, const raytr_params & rp,int in); geophys_params get_geophys()const{return gp;}; raytr_params get_raytr()const{return rp;}; int get_border(int i); int number()const{return iNumber;}; }; #endif /* any_elements.H */ /* Melnikov George Y. 29-Sep-1998 */ /* ... */ /* Melnikov George Yu. 23-Nov-1999 */ /* ... */
208 protected:
209  border_flag bf;
210  int iSpline;
211  int iBodies[2];
212  any_ex_border(int ib[2], int is, border_flag _bf);
213  any_ex_border(){iSpline=-1; bf=NORMAL; iBodies[0]=iBodies[1]=-5;};
214 public:
215  int get_body(int ib) ;
216  int spline()const {return iSpline;};
217  border_flag kind() {return bf;};
218 };
219 
220 // Тело
222 protected:
223  int iNumber;
224  IntAr aBorders;
225  geophys_params gp;
226  raytr_params rp;
227  any_ex_body(IntAr & ab, geophys_params const & gp, int in);
228  any_ex_body(){;};
229 public:
230 
231  virtual int n_of_borders()const {return aBorders.count();};
232  int make_body(const IntAr& ab, const geophys_params & gp,
233  const raytr_params & rp,int in);
234  geophys_params get_geophys()const{return gp;};
235  raytr_params get_raytr()const{return rp;};
236  int get_border(int i);
237  int number()const{return iNumber;};
238 };
239 
240 #endif /* any_elements.H */
241 
242 /* Melnikov George Y. 29-Sep-1998 */
243 /* ... */
244 /* Melnikov George Yu. 23-Nov-1999 */
245 /* ... */
Definition: any_elements.H:43
Definition: any_elements.H:98
Definition: any_elements.H:221
Definition: any_elements.H:22
Definition: IntAr.H:14
Definition: any_elements.H:108
Definition: any_elements.H:201
Definition: DoubleAr.H:14
Definition: any_elements.H:207
Definition: any_elements.H:134
Definition: any_elements.H:33