00001
00002
00003
00004 #include "cddefines.h"
00005 #include "thermal.h"
00006 #include "trace.h"
00007 #include "conv.h"
00008
00009
00010
00011 int ConvIoniz(void)
00012 {
00013 long int
00014
00015 loopi ,
00016
00017 LoopLimit;
00018
00019 DEBUG_ENTRY( "ConvIoniz()" );
00020
00021
00022
00023
00024 if( conv.lgSearch )
00025 {
00026
00027 LoopLimit = 30;
00028 }
00029 else
00030 {
00031 LoopLimit = 20;
00032 }
00033
00034
00035 loopi = 0;
00036
00037
00038
00039 if( !conv.lgSearch && conv.nPres2Ioniz == 0 )
00040 {
00041 if( ConvBase(loopi) )
00042 {
00043 return 1;
00044 }
00045 }
00046
00047 strcpy( conv.chConvIoniz, " NONE!!!!!" );
00048
00049
00050 do
00051 {
00052
00053 if( ConvBase(loopi) )
00054 {
00055
00056 return 1;
00057 }
00058
00059 if( trace.nTrConvg>=4 )
00060 {
00061
00062 fprintf( ioQQQ,
00063 " ConvIoniz4%4ld heat:%10.2e cool:%10.2e ",
00064 loopi, thermal.htot , thermal.ctot );
00065
00066
00067 if( conv.lgConvIoniz )
00068 {
00069 fprintf( ioQQQ, " ioniz converged\n" );
00070 }
00071 else
00072 {
00073 fprintf( ioQQQ, " ioniz no conv:%10.10s old %.4e new %.4e OscilOTS %c\n",
00074 conv.chConvIoniz ,
00075 conv.BadConvIoniz[0] ,
00076 conv.BadConvIoniz[1] ,
00077 TorF(conv.lgOscilOTS) );
00078 }
00079 }
00080
00081
00082 ++loopi;
00083 } while( !conv.lgConvIoniz && loopi < LoopLimit && !lgAbort );
00084
00085 if( !conv.lgConvIoniz )
00086 {
00087
00088 ++conv.nConvIonizFails;
00089
00090
00091
00092
00093 }
00094
00095
00096 if( trace.nTrConvg>=4 && !conv.lgConvIoniz )
00097 {
00098 fprintf( ioQQQ,
00099 " ConvIoniz4>>>>>>>>>>exit without converging after %li tries!!!!\n",loopi);
00100 }
00101 # if 0
00102 {
00103 #include "grainvar.h"
00104 #include "dense.h"
00105 #include "mole.h"
00106 fprintf(ioQQQ,"DEBUG co mol eden\t%.2f\t%e\t%e\t%e\t%e\n",
00107 fnzone,
00108 dense.eden,
00109 gv.TotalEden,
00110 co.comole_eden ,
00111 dense.EdenTrue);
00112 }
00113 # endif
00114
00115 return 0;
00116 }