cloudy trunk
Loading...
Searching...
No Matches
deuterium.cpp
Go to the documentation of this file.
1/* This file is part of Cloudy and is copyright (C)1978-2013 by Gary J. Ferland and
2 * others. For conditions of distribution and use see copyright notice in license.txt */
3#include "cddefines.h"
4#include "deuterium.h"
5#include "dense.h"
6#include "mole.h"
7
9
10void ScaleDensitiesDeuterium( const realnum &factor )
11{
12 deut.gas_phase *= factor;
13 deut.xMolecules *= factor;
14 deut.xIonDense[0] *= factor;
15 deut.xIonDense[1] *= factor;
16 return;
17}
18
20{
21 deut.xIonDense[0] = deut.gas_phase;
22 deut.xIonDense[1] = 0.;
23 return;
24}
25
26void SetDeuteriumIonization( const double &xNeutral, const double &xIonized )
27{
28 if( !deut.lgElmtOn )
29 return;
30
31 total_molecule_deut( deut.xMolecules );
32
33 realnum total = deut.gas_phase - deut.xMolecules;
34
35 fixit(); // try to let D ionization be independent of H
36#if 1
37 realnum neut = total * xNeutral/( xNeutral + xIonized );
38 realnum ionz = total * xIonized/( xNeutral + xIonized );
39#else
40 realnum src = mole.findrk("D+,e-=>D,PHOTON") * dense.eden;
41 realnum snk = mole.findrk("D,PHOTON=>D+,e-");
42 realnum ion_ratio = xIonized/xNeutral;
43 if( src > SMALLFLOAT )
44 ion_ratio = snk/src;
45 realnum neut = total / ( ion_ratio + 1.f );
46 realnum ionz = total * ion_ratio / ( ion_ratio + 1.f );
47#endif
48 if( total > 1e-4 * deut.gas_phase )
49 {
50 deut.xIonDense[0] = neut;
51 deut.xIonDense[1] = ionz;
52 }
53
54 //if( iteration >= 3 )
55 // fprintf( ioQQQ, "DEBUGGG SetDeuteriumIonization %li\t%.12e\t%.12e\t%.12e\t%.12e\t%.12e\t%.12e\t%.12e\n",
56 // nzone, deut.gas_phase, deut.xMolecules, total, old0, deut.xIonDense[0], old1, deut.xIonDense[1] );
57
58 return;
59}
60
62{
63 if( !deut.lgElmtOn )
64 return;
65 deut.fractionation = frac;
66 return;
67}
68
69void SetGasPhaseDeuterium( const realnum &Hdensity )
70{
71 if( !deut.lgElmtOn )
72 return;
73 deut.gas_phase = Hdensity * deut.fractionation;
74}
75
float realnum
Definition cddefines.h:103
void fixit(void)
Definition service.cpp:991
const realnum SMALLFLOAT
Definition cpu.h:191
t_dense dense
Definition dense.cpp:24
void SetGasPhaseDeuterium(const realnum &Hdensity)
Definition deuterium.cpp:69
void InitDeuteriumIonization()
Definition deuterium.cpp:19
void SetDeuteriumFractionation(const realnum &frac)
Definition deuterium.cpp:61
t_deuterium deut
Definition deuterium.cpp:8
void SetDeuteriumIonization(const double &xNeutral, const double &xIonized)
Definition deuterium.cpp:26
void ScaleDensitiesDeuterium(const realnum &factor)
Definition deuterium.cpp:10
t_mole_local mole
Definition mole.cpp:7
void total_molecule_deut(realnum &total)