00001
00002
00003
00004 #include "cddefines.h"
00005 #include "hydrooscilstr.h"
00006 #include "hydroeinsta.h"
00007 #include "physconst.h"
00008
00009 double HydroEinstA(long int n1,
00010 long int n2)
00011 {
00012 long int lo;
00013 long int lower, iupper;
00014 double EinstA_v,
00015 BranchingRatio,
00016 ryd,
00017 xl,
00018 xmicron,
00019 xu;
00020
00021 DEBUG_ENTRY( "HydroEinstA()" );
00022
00023
00024
00025
00026
00027
00028
00029
00030 lower = MIN2( n1 , n2 );
00031 iupper = MAX2( n1, n2 );
00032 if( lower < 0 || lower == iupper )
00033 {
00034 fprintf(ioQQQ," HydroEinstA called with impossible ns, =%li %li\n", lower, iupper);
00035 cdEXIT(EXIT_FAILURE);
00036 }
00037
00038 if( lower*iupper == 2 )
00039 {
00040
00041 EinstA_v = 1e-12;
00042 }
00043 else if( lower == 0 && iupper == 1 )
00044 {
00045
00046
00047 EinstA_v = 8.226;
00048 }
00049 else if( lower == 0 && iupper == 2 )
00050 {
00051
00052 EinstA_v = 6.265e8;
00053 }
00054 else
00055 {
00056
00057 if( lower == 0 )
00058 {
00059
00060 lo = 1;
00061 BranchingRatio = 1.;
00062 }
00063 else if( lower == 1 )
00064 {
00065
00066 lo = 2;
00067
00068
00069 BranchingRatio = 0.34;
00070 }
00071 else if( lower == 2 )
00072 {
00073
00074 lo = 2;
00075
00076
00077 BranchingRatio = 1.-0.34;
00078 }
00079 else
00080 {
00081
00082 lo = lower;
00083 BranchingRatio = 1.;
00084 }
00085
00086 xl = (double)(MIN2(iupper,lo));
00087 xu = (double)(MAX2(iupper,lo));
00088 ryd = 1./POW2(xl) - 1./POW2(xu);
00089
00090 xmicron = 1.E4/(ryd*RYD_INF);
00091 EinstA_v = HydroOscilStr(xl,xu)*TRANS_PROB_CONST*1e8f/(POW2(xmicron))*xl*xl/
00092 xu/xu*BranchingRatio;
00093
00094 }
00095
00096 DEBUG_EXIT( "HydroEinstA()" );
00097 return( EinstA_v );
00098 }
00099