Streamer fluid modeling - An overview of ARCoS
1.0
Main Page
Related Pages
Data Types List
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
src
sprites.c
Go to the documentation of this file.
1
12
#include <stdlib.h>
13
#include <stdio.h>
14
#include <math.h>
15
#include <string.h>
16
17
#include "
cdr.h
"
18
#include "
parameters.h
"
19
#include "
photo.h
"
20
#include "
proto.h
"
21
#include "
rz_array.h
"
22
#include "
species.h
"
23
24
static
int
var_max_axis
(
cdr_grid_t
*grid,
rz_array_t
*var,
int
sign);
25
26
double
spr_nu_a
,
spr_nu_d
,
spr_nu_rt
;
27
photo_term_t
*
spr_photo_terms
;
28
extern
photo_term_t
*
photo_terms
;
29
35
double
36
spr_density_at
(
double
altitude)
37
{
38
return
exp (-altitude /
dens_decay_len
);
39
}
40
41
47
void
48
spr_init
()
49
{
50
/* We make the Courant numbers depend on the altitude: this is because
51
when we apply the Courant-Levy criterium we assume v = -E, which is not
52
true if the mobility now is != 1.0 */
53
spr_nu_a
=
nu_a
;
54
spr_nu_d
=
nu_d
;
55
spr_nu_rt
=
nu_rt
;
56
57
photo_copy_list
(photo_terms, &spr_photo_terms);
58
}
59
64
void
65
spr_hook
(
cdr_grid_t
*grid)
66
{
67
double
altitude;
68
69
altitude =
spr_head_altitude
(grid,
sprite_sign
);
70
71
spr_update
(altitude);
72
}
73
77
void
78
spr_update
(
double
altitude)
79
{
80
double
back_dens =
spr_density_at
(altitude);
81
photo_term_t
*p0, *p;
82
83
nu_a
=
spr_nu_a
;
84
nu_d
=
spr_nu_d
* back_dens;
85
nu_rt
=
spr_nu_rt
;
86
87
for
(p0 = spr_photo_terms, p = photo_terms; p0; p0 = p0->
next
, p = p->
next
) {
88
p->
lambda
= p0->
lambda
* back_dens * back_dens;
89
p->
A
= p0->
A
* (
sprite_dens_0
+
sprite_dens_q
)
90
/ (back_dens +
sprite_dens_q
);
91
}
92
93
}
94
100
double
101
spr_head_altitude
(
cdr_grid_t
*grid,
int
sign)
102
{
103
int
ih;
104
ih =
var_max_axis
(grid, grid->
charge
, sign);
105
if
(0 == ih) ih =
var_max_axis
(grid, grid->
dens
[
electrons
], 1);
106
return
z_at
(ih, grid->level);
107
}
108
110
static
int
111
var_max_axis
(
cdr_grid_t
*grid,
rz_array_t
*var,
int
sign)
112
{
113
int
iz, iz_max = 0;
114
double
var_max = 0.0;
115
116
iter_grid_z
(grid, iz) {
117
if
(sign *
RZT
(var, 0, iz, 0) > var_max) {
118
iz_max = iz;
119
var_max =
RZT
(var, 0, iz, 0);
120
}
121
}
122
123
return
iz_max;
124
}
Generated on Fri Jul 4 2014 15:40:20 for Streamer fluid modeling - An overview of ARCoS by
1.8.2