00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef DETONATIONPRESSURE_H
00014 #define DETONATIONPRESSURE_H
00015 #include <cmath>
00016
00017
00018 namespace cylExp {
00019 struct DetonationPressure;
00020 struct PressurePulse;
00021 }
00022
00023
00024 struct DetonationPressure {
00025
00026 double operator()(double time, double x, double y, double z) const
00027 {
00028
00029
00030 const double p1 = 1.0e5;
00031 const double p2 = 3.33e6*0.95;
00032 const double p3 = 1.165e6;
00033 const double vcj = 2375.0;
00034
00035 const double zbegin = 1.690;
00036
00037 time += (zbegin/vcj);
00038 z += zbegin;
00039
00040 double tcj = (z)/vcj;
00041 double T = tcj/3.0;
00042
00043 const double initialPressure = p1;
00044
00045 if (time>tcj) {
00046 double pressure = (p2-p3)*std::exp((tcj-time)/T)+p3;
00047 return pressure-initialPressure;
00048 } else {
00049 return p1-initialPressure;
00050 }
00051
00052 return 0.0;
00053 }
00054 };
00055
00056 #endif