change TESSEROID to MAG_TESSEROID
This commit is contained in:
parent
95e17fce02
commit
c351a5ac13
@ -14,7 +14,7 @@ Defines the TESSEROID, SPHERE, and PRISM structures.
|
||||
|
||||
|
||||
/* Split a tesseroid into 8. */
|
||||
void split_tess(TESSEROID tess, TESSEROID *split)
|
||||
void split_tess(MAG_TESSEROID tess, MAG_TESSEROID *split)
|
||||
{
|
||||
double dlon = 0.5*(tess.e - tess.w),
|
||||
dlat = 0.5*(tess.n - tess.s),
|
||||
|
@ -3,8 +3,8 @@ Data structures for geometric elements and functions that operate on them.
|
||||
Defines the TESSEROID, SPHERE, and PRISM structures.
|
||||
*/
|
||||
|
||||
#ifndef _TESSEROIDS_GEOMETRY_H_
|
||||
#define _TESSEROIDS_GEOMETRY_H_
|
||||
#ifndef _MAG_TESSEROIDS_GEOMETRY_H_
|
||||
#define _MAG_TESSEROIDS_GEOMETRY_H_
|
||||
|
||||
|
||||
/* Store information on a tesseroid */
|
||||
@ -29,9 +29,9 @@ typedef struct tess_struct {
|
||||
//double Rx;
|
||||
//double Ry;
|
||||
//double Rz;
|
||||
} TESSEROID;
|
||||
} MAG_TESSEROID;
|
||||
|
||||
|
||||
void split_tess(TESSEROID tess, TESSEROID *split);
|
||||
void split_tess(MAG_TESSEROID tess, MAG_TESSEROID *split);
|
||||
|
||||
#endif
|
||||
|
@ -22,7 +22,7 @@ Karlsruhe, Germany.
|
||||
|
||||
|
||||
/* Calculates the field of a tesseroid model at a given point. */
|
||||
double calc_tess_model(TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, double (*field)(TESSEROID, double, double, double, GLQ, GLQ, GLQ))
|
||||
double calc_tess_model(MAG_TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, double (*field)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ))
|
||||
{
|
||||
double res;
|
||||
int tess;
|
||||
@ -49,7 +49,7 @@ double calc_tess_model(TESSEROID *model, int size, double lonp, double latp, dou
|
||||
return res;
|
||||
}
|
||||
|
||||
void calc_tess_model_triple(TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, void (*field_triple)(TESSEROID, double, double, double, GLQ, GLQ, GLQ, double*), double *res)
|
||||
void calc_tess_model_triple(MAG_TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, void (*field_triple)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ, double*), double *res)
|
||||
{
|
||||
double r1, r2, r3, ri[3];
|
||||
int tess;
|
||||
@ -89,11 +89,11 @@ void calc_tess_model_triple(TESSEROID *model, int size, double lonp, double latp
|
||||
|
||||
|
||||
/* Adaptatively calculate the field of a tesseroid model at a given point */
|
||||
double calc_tess_model_adapt(TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, double (*field)(TESSEROID, double, double, double, GLQ, GLQ, GLQ), double ratio)
|
||||
double calc_tess_model_adapt(MAG_TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, double (*field)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ), double ratio)
|
||||
{
|
||||
double res, dist, lont, latt, rt, d2r = PI/180.;
|
||||
int tess;
|
||||
TESSEROID split[8];
|
||||
MAG_TESSEROID split[8];
|
||||
|
||||
res = 0;
|
||||
for(tess = 0; tess < size; tess++)
|
||||
@ -153,7 +153,7 @@ double calc_tess_model_adapt(TESSEROID *model, int size, double lonp, double lat
|
||||
}
|
||||
|
||||
/* Calculates gxx caused by a tesseroid. */
|
||||
double tess_gxx(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
double tess_gxx(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
GLQ glq_lat, GLQ glq_r)
|
||||
{
|
||||
double d2r = PI/180., l_sqr, kphi, coslatp, coslatc, sinlatp, sinlatc,
|
||||
@ -197,7 +197,7 @@ double tess_gxx(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon
|
||||
|
||||
|
||||
/* Calculates gxy caused by a tesseroid. */
|
||||
double tess_gxy(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
double tess_gxy(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
GLQ glq_lat, GLQ glq_r)
|
||||
{
|
||||
double d2r = PI/180., l_sqr, kphi, coslatp, coslatc, sinlatp, sinlatc,
|
||||
@ -246,7 +246,7 @@ double tess_gxy(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon
|
||||
|
||||
|
||||
/* Calculates gxz caused by a tesseroid. */
|
||||
double tess_gxz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
double tess_gxz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
GLQ glq_lat, GLQ glq_r)
|
||||
{
|
||||
double d2r = PI/180., l_sqr, kphi, coslatp, coslatc, sinlatp, sinlatc,
|
||||
@ -295,7 +295,7 @@ double tess_gxz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon
|
||||
|
||||
|
||||
/* Calculates gyy caused by a tesseroid. */
|
||||
double tess_gyy(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
double tess_gyy(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
GLQ glq_lat, GLQ glq_r)
|
||||
{
|
||||
double d2r = PI/180., l_sqr, coslatp, coslatc, sinlatp, sinlatc,
|
||||
@ -340,7 +340,7 @@ double tess_gyy(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon
|
||||
|
||||
|
||||
/* Calculates gyz caused by a tesseroid. */
|
||||
double tess_gyz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
double tess_gyz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
GLQ glq_lat, GLQ glq_r)
|
||||
{
|
||||
double d2r = PI/180., l_sqr, coslatp, coslatc, sinlatp, sinlatc,
|
||||
@ -388,7 +388,7 @@ double tess_gyz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon
|
||||
|
||||
|
||||
/* Calculates gzz caused by a tesseroid. */
|
||||
double tess_gzz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
double tess_gzz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
GLQ glq_lat, GLQ glq_r)
|
||||
{
|
||||
double d2r = PI/180., l_sqr, coslatp, coslatc, sinlatp, sinlatc,
|
||||
@ -432,7 +432,7 @@ double tess_gzz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon
|
||||
}
|
||||
|
||||
/*Calculate three gravity gradient components simultaneously*/
|
||||
void tess_gxz_gyz_gzz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
void tess_gxz_gyz_gzz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
GLQ glq_lat, GLQ glq_r, double *res)
|
||||
{
|
||||
double d2r = PI/180., l_sqr, coslatp, coslatc, sinlatp, sinlatc, sinlon,
|
||||
@ -496,7 +496,7 @@ void tess_gxz_gyz_gzz(TESSEROID tess, double lonp, double latp, double rp, GLQ g
|
||||
return;
|
||||
}
|
||||
|
||||
void tess_gxx_gxy_gxz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
void tess_gxx_gxy_gxz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
GLQ glq_lat, GLQ glq_r, double *res)
|
||||
{
|
||||
double d2r = PI/180., l_sqr, coslatp, coslatc, sinlatp, sinlatc, sinlon,
|
||||
@ -562,7 +562,7 @@ void tess_gxx_gxy_gxz(TESSEROID tess, double lonp, double latp, double rp, GLQ g
|
||||
|
||||
|
||||
|
||||
void tess_gxy_gyy_gyz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
void tess_gxy_gyy_gyz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon,
|
||||
GLQ glq_lat, GLQ glq_r, double *res)
|
||||
{
|
||||
double d2r = PI/180., l_sqr, coslatp, coslatc, sinlatp, sinlatc, sinlon,
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Functions that calculate the gravitational potential and its first and second
|
||||
derivatives for the tesseroid.
|
||||
derivatives for the MAG_tesseroid.
|
||||
|
||||
The gravity gradients can be calculated using the general formula of
|
||||
Grombein et al. (2010).
|
||||
@ -16,7 +16,7 @@ inverted, so a positive density results in positive gz.
|
||||
Example
|
||||
-------
|
||||
|
||||
To calculate the gzz component due to a tesseroid on a regular grid:
|
||||
To calculate the gzz component due to a MAG_tesseroid on a regular grid:
|
||||
|
||||
#include <stdio.h>
|
||||
#include "glq.h"r
|
||||
@ -25,7 +25,7 @@ To calculate the gzz component due to a tesseroid on a regular grid:
|
||||
|
||||
int main()
|
||||
{
|
||||
TESSEROID tess = {1000, 44, 46, -1, 1, MEAN_EARTH_RADIUS - 100000,
|
||||
MAG_TESSEROID tess = {1000, 44, 46, -1, 1, MEAN_EARTH_RADIUS - 100000,
|
||||
MEAN_EARTH_RADIUS};
|
||||
GLQ *glqlon, *glqlat, *glqr;
|
||||
double lon, lat, r = MEAN_EARTH_RADIUS + 1500000, res;
|
||||
@ -65,29 +65,29 @@ KIT Scientific Reports 7547, ISBN 978-3-86644-510-9, KIT Scientific Publishing,
|
||||
Karlsruhe, Germany.
|
||||
*/
|
||||
|
||||
#ifndef _TESSEROIDS_GRAV_TESS_H_
|
||||
#define _TESSEROIDS_GRAV_TESS_H_
|
||||
#ifndef _MAG_TESSEROIDS_GRAV_TESS_H_
|
||||
#define _MAG_TESSEROIDS_GRAV_TESS_H_
|
||||
|
||||
|
||||
/* Needed for definition of TESSEROID */
|
||||
/* Needed for definition of MAG_TESSEROID */
|
||||
#include "geometry.h"
|
||||
/* Needed for definition of GLQ */
|
||||
#include "glq.h"
|
||||
|
||||
double calc_tess_model(TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, double (*field)(TESSEROID, double, double, double, GLQ, GLQ, GLQ));
|
||||
void calc_tess_model_triple(TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r,
|
||||
void (*field_triple)(TESSEROID, double, double, double, GLQ, GLQ, GLQ, double*), double *res);
|
||||
double calc_tess_model_adapt(TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, double (*field)(TESSEROID, double, double, double, GLQ, GLQ, GLQ), double ratio);
|
||||
double calc_tess_model(MAG_TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, double (*field)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ));
|
||||
void calc_tess_model_triple(MAG_TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r,
|
||||
void (*field_triple)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ, double*), double *res);
|
||||
double calc_tess_model_adapt(MAG_TESSEROID *model, int size, double lonp, double latp, double rp, GLQ *glq_lon, GLQ *glq_lat, GLQ *glq_r, double (*field)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ), double ratio);
|
||||
|
||||
double tess_gxx(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gxy(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gxz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gyy(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gyz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gzz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gxx(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gxy(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gxz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gyy(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gyz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
double tess_gzz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r);
|
||||
|
||||
void tess_gxz_gyz_gzz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r, double *res);
|
||||
void tess_gxx_gxy_gxz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r, double *res);
|
||||
void tess_gxy_gyy_gyz(TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r, double *res);
|
||||
void tess_gxz_gyz_gzz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r, double *res);
|
||||
void tess_gxx_gxy_gxz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r, double *res);
|
||||
void tess_gxy_gyy_gyz(MAG_TESSEROID tess, double lonp, double latp, double rp, GLQ glq_lon, GLQ glq_lat, GLQ glq_r, double *res);
|
||||
|
||||
#endif
|
||||
|
@ -564,7 +564,7 @@ void strstrip(char *str)
|
||||
|
||||
|
||||
/* Read a single tesseroid from a string */
|
||||
int gets_mag_tess(const char *str, TESSEROID *tess)
|
||||
int gets_mag_tess(const char *str, MAG_TESSEROID *tess)
|
||||
{
|
||||
double w, e, s, n, top, bot, dens, suscept, Bx, By, Bz, Rx, Ry, Rz;
|
||||
int nread, nchars;
|
||||
@ -595,14 +595,14 @@ int gets_mag_tess(const char *str, TESSEROID *tess)
|
||||
}
|
||||
|
||||
//ELDAR BAYKIEV////////////////////////////////
|
||||
TESSEROID * read_mag_tess_model(FILE *modelfile, int *size)
|
||||
MAG_TESSEROID * read_mag_tess_model(FILE *modelfile, int *size)
|
||||
{
|
||||
TESSEROID *model, *tmp;
|
||||
MAG_TESSEROID *model, *tmp;
|
||||
int buffsize = 300, line, badinput = 0, error_exit = 0;
|
||||
char sbuff[10000];
|
||||
|
||||
/* Start with a single buffer allocation and expand later if necessary */
|
||||
model = (TESSEROID *)malloc(buffsize*sizeof(TESSEROID));
|
||||
model = (MAG_TESSEROID *)malloc(buffsize*sizeof(MAG_TESSEROID));
|
||||
if(model == NULL)
|
||||
{
|
||||
log_error("problem allocating initial memory to load tesseroid model.");
|
||||
@ -630,7 +630,7 @@ TESSEROID * read_mag_tess_model(FILE *modelfile, int *size)
|
||||
if(*size == buffsize)
|
||||
{
|
||||
buffsize += buffsize;
|
||||
tmp = (TESSEROID *)realloc(model, buffsize*sizeof(TESSEROID));
|
||||
tmp = (MAG_TESSEROID *)realloc(model, buffsize*sizeof(MAG_TESSEROID));
|
||||
if(tmp == NULL)
|
||||
{
|
||||
/* Need to free because realloc leaves unchanged in case of
|
||||
@ -660,7 +660,7 @@ TESSEROID * read_mag_tess_model(FILE *modelfile, int *size)
|
||||
/* Adjust the size of the model */
|
||||
if(*size != 0)
|
||||
{
|
||||
tmp = (TESSEROID *)realloc(model, (*size)*sizeof(TESSEROID));
|
||||
tmp = (MAG_TESSEROID *)realloc(model, (*size)*sizeof(MAG_TESSEROID));
|
||||
if(tmp == NULL)
|
||||
{
|
||||
/* Need to free because realloc leaves unchanged in case of
|
||||
|
@ -3,10 +3,10 @@ Input and output parsing tools.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _TESSEROIDS_PARSERS_H_
|
||||
#define _TESSEROIDS_PARSERS_H_
|
||||
#ifndef _MAG_TESSEROIDS_PARSERS_H_
|
||||
#define _MAG_TESSEROIDS_PARSERS_H_
|
||||
|
||||
/* Needed for definition of TESSEROID and PRISM */
|
||||
/* Needed for definition of MAG_TESSEROID and PRISM */
|
||||
#include "geometry.h"
|
||||
/* Need for the definition of FILE */
|
||||
#include <stdio.h>
|
||||
@ -68,8 +68,8 @@ int parse_gradcalc_args(int argc, char **argv, const char *progname, GRADCALC_AR
|
||||
|
||||
void strstrip(char *str);
|
||||
|
||||
int gets_mag_tess(const char *str, TESSEROID *tess);
|
||||
TESSEROID * read_mag_tess_model(FILE *modelfile, int *size);
|
||||
int gets_mag_tess(const char *str, MAG_TESSEROID *tess);
|
||||
MAG_TESSEROID * read_mag_tess_model(FILE *modelfile, int *size);
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -24,7 +24,7 @@ Generic main function for the tessb* programs.
|
||||
/* Print the help message for tessh* programs */
|
||||
void print_tessb_help(const char *progname)
|
||||
{
|
||||
printf("MAGNETIC TESSEROIDS\n");
|
||||
printf("MAGNETIC MAG_TESSEROIDS\n");
|
||||
printf("Usage: %s MODELFILE [OPTIONS]\n\n", progname);
|
||||
if(strcmp(progname + 4, "pot") == 0)
|
||||
{
|
||||
@ -41,12 +41,12 @@ void print_tessb_help(const char *progname)
|
||||
|
||||
/* Run the main for a generic tessh* program */
|
||||
int run_tessb_main(int argc, char **argv, const char *progname,
|
||||
double (*field)(TESSEROID, double, double, double, GLQ, GLQ, GLQ),
|
||||
double (*field)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ),
|
||||
double ratio1, double ratio2, double ratio3)
|
||||
{
|
||||
TESSB_ARGS args;
|
||||
GLQ *glq_lon, *glq_lat, *glq_r;
|
||||
TESSEROID *model;
|
||||
MAG_TESSEROID *model;
|
||||
|
||||
int modelsize, rc, line, points = 0, error_exit = 0, bad_input = 0;
|
||||
char buff[10000];
|
||||
@ -65,10 +65,10 @@ int run_tessb_main(int argc, char **argv, const char *progname,
|
||||
clock_t tstart;
|
||||
struct tm * timeinfo;
|
||||
|
||||
double (*field1)(TESSEROID, double, double, double, GLQ, GLQ, GLQ);
|
||||
double (*field2)(TESSEROID, double, double, double, GLQ, GLQ, GLQ);
|
||||
double (*field3)(TESSEROID, double, double, double, GLQ, GLQ, GLQ);
|
||||
void (*field_triple)(TESSEROID, double, double, double, GLQ, GLQ, GLQ, double*);
|
||||
double (*field1)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ);
|
||||
double (*field2)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ);
|
||||
double (*field3)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ);
|
||||
void (*field_triple)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ, double*);
|
||||
double ggt_1, ggt_2, ggt_3;
|
||||
double gtt_v[3];
|
||||
int n_tesseroid;
|
||||
|
@ -2,13 +2,13 @@
|
||||
Generic main function for the tessb* programs.
|
||||
*/
|
||||
|
||||
#ifndef _TESSEROIDS_TESSH_MAIN_H_
|
||||
#define _TESSEROIDS_TESSH_MAIN_H_
|
||||
#ifndef _MAG_TESSEROIDS_TESSH_MAIN_H_
|
||||
#define _MAG_TESSEROIDS_TESSH_MAIN_H_
|
||||
|
||||
#include "glq.h"
|
||||
#include "geometry.h"
|
||||
|
||||
void print_tessb_help(const char *progname);
|
||||
int run_tessb_main(int argc, char **argv, const char *progname, double (*field)(TESSEROID, double, double, double, GLQ, GLQ, GLQ), double ratio1, double ratio2, double ratio3);
|
||||
int run_tessb_main(int argc, char **argv, const char *progname, double (*field)(MAG_TESSEROID, double, double, double, GLQ, GLQ, GLQ), double ratio1, double ratio2, double ratio3);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user