forked from gemini3d/gemini3d
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgemini3d.h
More file actions
156 lines (144 loc) · 8.12 KB
/
Copy pathgemini3d.h
File metadata and controls
156 lines (144 loc) · 8.12 KB
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#ifndef GEMINI3D_H
#define GEMINI3D_H
// needed when compiling C files???
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
enum { LMAX = 1000 };
struct params {
// order and lengths must match in Fortran and C
// see gemini_main.f90 "cparams"
bool fortran_nml;
bool fortran_cli;
bool debug;
bool dryrun;
char out_dir[LMAX];
// .ini [base]
int ymd[3];
float UTsec0;
float tdur;
float dtout;
float activ[3];
float tcfl;
float Teinf;
// .ini
};
// cfgC for now is just passed around as void**, to modify it would have to be struct *
/* This is now housed in the main C program */
extern int gemini_main(struct params *, int*, int*);
extern void help_gemini_bin();
/* interfaces to libgemini */
extern void gemini_cfg_alloc_C(void**);
extern void gemini_cfg_dealloc_C(void**);
extern void cli_in_C(struct params*, int*, int*, void**);
extern void read_config_in_C(struct params*, void**);
extern void set_magnetic_pole_in_C(void**);
extern void grid_size_in_C(void**);
extern void get_fullgrid_size_C(int*, int*, int*);
extern void get_config_vars_C(void**, bool*, int*, double*, double*);
extern void get_subgrid_size_C(int*, int*, int*);
extern void get_species_size_C(int*);
extern void get_fullgrid_lims_C(double*, double*, double*, double*, double*, double*);
extern void gemini_work_alloc_C(void**,void**);
extern void gemini_work_dealloc_C(void**, void**);
//extern void memblock_from_C(double**, double**, double**);
extern void set_start_values_auxtimevars_C(double*, double*, double*);
extern void set_start_timefromcfg_C(void**, int*, double*, double*);
extern void set_start_values_auxvars_C(int*, void**, double**);
extern void get_cfg_timevars_C(void**,double*,bool*,double*,int*,int*);
extern void msisinit_C(void**);
extern void init_neutralBG_input_C(void**, int*, void**, double*, double*, int*, double*, void**);
extern void set_update_cadence_C(int*);
extern void neutral_atmos_winds_C(void**, int*, void**, int*, double*, void**);
extern void check_finite_output_C(void**, double**, double**, double*);
extern void get_solar_indices_C(void**, double*, double*);
extern void v12rhov1_C(double**, double**);
extern void T2rhoe_C(double**, double**);
extern void interface_vels_allspec_C(int*, void**, double**, void**, int*);
extern void sweep3_allparams_C(double**, double**, void**, int*, void**, double*);
extern void sweep3_allspec_mass_C(double**, double**, void**, int*, void**, double*);
extern void sweep3_allspec_momentum_C(double**, double**, void**, int*, void**, double*);
extern void sweep3_allspec_energy_C(double**, double**, void**, int*, void**, double*);
extern void sweep1_allparams_C(double**, double**, void**, int*, void**, double*);
extern void sweep1_allspec_mass_C(double**, double**, void**, int*, void**, double*);
extern void sweep1_allspec_momentum_C(double**, double**, void**, int*, void**, double*);
extern void sweep1_allspec_energy_C(double**, double**, void**, int*, void**, double*);
extern void sweep2_allparams_C(double**, double**, void**, int*, void**, double*);
extern void sweep2_allspec_mass_C(double**, double**, void**, int*, void**, double*);
extern void sweep2_allspec_momentum_C(double**, double**, void**, int*, void**, double*);
extern void sweep2_allspec_energy_C(double**, double**, void**, int*, void**, double*);
extern void rhov12v1_C(double**, double**);
extern void clean_param_C(int*, int*, void**, double**);
extern void VNRicht_artvisc_C(double**, void**);
extern void compression_C(double**, double**, void**, int*, void**, double*);
extern void rhoe2T_C(double**, double**);
extern void energy_diffusion_C(void**, int*, void**, double**, double**, void**, double*);
extern void source_loss_allparams_C(void**, double**, double**, double**, void**, int*, void**,
double*);
extern void source_loss_mass_C(void**, double**,double**,double**,void**,int*,void**,double*);
extern void source_loss_momentum_C(void**, double**,double**,double**,void**,int*,void**,double*);
extern void source_loss_energy_C(void**, double**,double**,double**,void**,int*,void**,double*);
extern void clear_ionization_arrays_C(void**);
extern void impact_ionization_C(void**,double**,void**,int*,void**,double*,double*,int*,double*);
extern void solar_ionization_C(void**,double**,void**,int*,void**,double*,int*,double*);
extern void check_dryrun_C(void**);
extern void maxcfl_C(double**, int*, void**, double*, double*);
extern void dateinc_C(double*, int*, double*);
extern void plasma_output_nompi_C(void**, int*, double*, double**, double**, int*, double*, double*, double*);
extern void read_fullsize_gridcenter_C(void**);
extern void gemini_grid_dealloc_C(int*,void**);
extern void gemini_grid_generate_C(int*, void**);
extern void gemini_grid_generate_altnull_C(int*, void**, double*);
extern void setv2v3_C(double*, double*);
extern void set_global_boundaries_allspec_C(int*, void**, double**, double**, void**, int*);
extern void set_electrodynamics_commtype_C(int*, void**);
extern void electrodynamics_test_C(void**,int*,void**,double**,double**,double**,void**);
extern void get_neutralperturb_interptype_C(void**,int*);
extern void init_precipinput_C(void**, int*, void**, double*, double*, int*, double*, void**);
extern void precip_perturb_C(void**,void**,int*,void**,double*,double*,int*,double*);
extern void init_efieldinput_nompi_C(void**, int*, void**, double*, double*, int*, double*, void**);
extern void efield_perturb_nompi_C(void**,void**,int*,void**,double*,double*,int*,double*);
extern void interp3_C(double**,double**,double**,int*,int*,int*,double**,double**,int*,int*,
double*,double*,double*,double**,double**,int*);
extern void interp2_C(double**,double**,int*,int*,double**,double**,int*,int*,double*,double*,double**,
double**);
extern void get_it_C(int*);
extern void itinc_C();
extern void init_solfluxinput_C(void**, int*, void**, double*, double*, int*, double*, void**);
extern void solflux_perturb_C(void**, void**, int*, void**, double*, double*, int*, double*);
extern void source_neut_C(void**,double**,void**,int*,void**);
/* interfaces for libgemini_mpi */
// some of these will very likely need to be rewritten when used with forestclaw
extern void mpisetup_C();
extern void mpiparms_C(int*, int*);
extern void init_procgrid_C(int*, int*, int*, int*);
extern void read_grid_C(void**, int*, void**);
extern void outdir_fullgridvaralloc_C(void**, void**, int*, int*, int*);
extern void calc_subgrid_size_in_C(int*, int*);
extern void get_initial_state_C(void**, double**, double**, void**, int*, void**, double*, int*, double*, double*, double*);
extern void init_inputdata_C(void**, int*, void**, double*, double*, int*, double*, void**);
extern void init_Efieldinput_C(void**, int*, void**, double*, double*, void**, int*, double*);
extern void pot2perpfield_C(int*, void**, double**);
extern void BGfield_Lagrangian_C(void**, int*, void**, double**, void**);
extern void init_neutralperturb_C(double*, void**, int*, void**, void**, int*, double*);
extern void get_initial_drifts_C(void**, int*, void**, double**, double**, double**, void**);
extern void neutral_atmos_wind_update_C(void**);
extern void neutral_perturb_C(void**, void**, int*, void**, double*, double*, int*, double*);
extern void efield_perturb_C(void**, void**, int*, void**, double*, double*, int*, double*);
extern void inputdata_perturb_C(void**, void**, int*, void**, double*, double*, int*, double*);
extern void electrodynamics_C(void**, double**, double**, double**, void**, int*, void**, double*, double*, int*, double*);
extern void get_gavg_Tinf_C(void**);
extern void clear_neutral_perturb_C(void**);
extern void clear_neutral_background_C(void**);
extern void halo_interface_vels_allspec_C(int*, void**, double**, int*);
extern void halo_allparams_C(int*, void**, double**, double**);
extern void halo_fluidvars_C(int*, void**, double**, double**);
extern void RK2_prep_mpi_allspec_C(int*, void**, double**);
extern void RK2_global_boundary_allspec_C(int*, void**, double**);
extern void dt_select_C(void**, int*, void**, double**, double**, double*, double*, double*, double*);
extern void check_fileoutput_C(void**, double**, double**, void**, double*, double*, double*, double*, int*, int*, double*);
#ifdef __cplusplus
}
#endif
#endif