aboutsummaryrefslogtreecommitdiff
path: root/src/patch/grid.cc
blob: d196e7a8078bc6e757a36469a544d85085ab197e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// grid.cc -- classes for a 2D uniform tensor-product grid
// $Id$
//
// grid_arrays::grid_arrays
// grid::grid
//

#include <stdio.h>
#include <assert.h>
#include <limits.h>
#include <math.h>
#include <float.h>

#include "jt/stdc.h"
#include "jt/util++.hh"		// jtutil::how_many_in_range(),
				// round<fp>::, fuzzy<fp>::
#include "jt/array.hh"
#include "jt/linear_map.hh"

#include "fp.hh"
#include "coords.hh"
#include "grid.hh"

//*****************************************************************************

//
// This function constructs a  grid_arrays  object.
//
grid_arrays::grid_arrays(const grid_arrays::array_pars &array_pars_in,
			 int N_gridfns_in)
	: gridfn_data_
	     (0, N_gridfns_in-1,
	      array_pars_in.min_irho - array_pars_in.min_rho_N_ghost_zones,
	      array_pars_in.max_irho + array_pars_in.max_rho_N_ghost_zones,
	      array_pars_in.min_isigma - array_pars_in.min_sigma_N_ghost_zones,
	      array_pars_in.max_isigma + array_pars_in.max_sigma_N_ghost_zones),

	  N_gridfns_(N_gridfns_in),

	  min_irho_(array_pars_in.min_irho),
	  max_irho_(array_pars_in.max_irho),
	  min_isigma_(array_pars_in.min_isigma),
	  max_isigma_(array_pars_in.max_isigma),

	  full_grid__min_irho_
	     (array_pars_in.min_irho - array_pars_in.min_rho_N_ghost_zones),
	  full_grid__max_irho_
	     (array_pars_in.max_irho + array_pars_in.max_rho_N_ghost_zones),
	  full_grid__min_isigma_
	     (array_pars_in.min_isigma - array_pars_in.min_sigma_N_ghost_zones),
	  full_grid__max_isigma_
	     (array_pars_in.max_isigma + array_pars_in.max_sigma_N_ghost_zones)
								     // no comma

{ }

//*****************************************************************************

//
// This function constructs a  grid  object.
//
grid::grid(const grid_arrays::array_pars &grid_array_pars_in,
	   const grid::grid_pars &grid_pars_in,
	   int N_gridfns_in,
	   bool verbose_flag = false)

	: grid_arrays(grid_array_pars_in,
		      N_gridfns_in),

	  rho_map_
	     (grid_array_pars_in.min_irho
		 - grid_array_pars_in.min_rho_N_ghost_zones,
	      grid_array_pars_in.max_irho
		 + grid_array_pars_in.max_rho_N_ghost_zones,
	      jtutil::radians_of_degrees(
		 grid_pars_in.min_drho
		 - grid_array_pars_in.min_rho_N_ghost_zones
		   * grid_pars_in.delta_drho
					),
	      jtutil::radians_of_degrees(grid_pars_in.delta_drho),
	      jtutil::radians_of_degrees(
		 grid_pars_in.max_drho
		 + grid_array_pars_in.max_rho_N_ghost_zones
		   * grid_pars_in.delta_drho
					)),

	  sigma_map_
	     (grid_array_pars_in.min_isigma
		 - grid_array_pars_in.min_sigma_N_ghost_zones,
	      grid_array_pars_in.max_isigma
		 + grid_array_pars_in.max_sigma_N_ghost_zones,
	      jtutil::radians_of_degrees(
		 grid_pars_in.min_dsigma
		 - grid_array_pars_in.min_sigma_N_ghost_zones
		   * grid_pars_in.delta_dsigma
					),
	      jtutil::radians_of_degrees(grid_pars_in.delta_dsigma),
	      jtutil::radians_of_degrees(
		 grid_pars_in.max_dsigma
		 + grid_array_pars_in.max_sigma_N_ghost_zones
		   * grid_pars_in.delta_dsigma
					)),

	  min_rho_(jtutil::radians_of_degrees(grid_pars_in.min_drho)),
	  max_rho_(jtutil::radians_of_degrees(grid_pars_in.max_drho)),
	  min_sigma_(jtutil::radians_of_degrees(grid_pars_in.min_dsigma)),
	  max_sigma_(jtutil::radians_of_degrees(grid_pars_in.max_dsigma))
								     // no comma

{
if (verbose_flag)
   then printf("grid::grid(): created %d*%d grid (%d gridfn(s))\n",
	       N_irho(), N_isigma(), N_gridfns());
}