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 DEBUG_ENTRY( "ConvIoniz()" );
00014
00015
00016 int LoopLimit = conv.lgSearch ? 30 : 20;
00017
00018
00019
00020 if( !conv.lgSearch && conv.nPres2Ioniz == 0 )
00021 {
00022 if( ConvBase(0) )
00023 return 1;
00024 }
00025
00026 conv.resetConvIoniz();
00027
00028
00029 for( int i=0; i < LoopLimit; ++i )
00030 {
00031
00032 if( ConvBase(i) )
00033 return 1;
00034
00035 if( trace.nTrConvg >= 4 )
00036 {
00037
00038 fprintf( ioQQQ, " ConvIoniz4 %d heat: %.2e cool: %.2e ",
00039 i, thermal.htot , thermal.ctot );
00040
00041
00042 if( conv.lgConvIoniz() )
00043 {
00044 fprintf( ioQQQ, " ioniz converged\n" );
00045 }
00046 else
00047 {
00048 fprintf( ioQQQ, " ioniz no conv: %s old %.4e new %.4e OscilOTS %c\n",
00049 conv.chConvIoniz() ,
00050 conv.convIonizOldVal() ,
00051 conv.convIonizNewVal() ,
00052 TorF(conv.lgOscilOTS));
00053 }
00054 }
00055
00056 if( conv.lgConvIoniz() || lgAbort )
00057 break;
00058
00059 }
00060
00061 if( trace.nTrConvg>=4 )
00062 {
00063 if (! conv.lgConvIoniz())
00064 {
00065 fprintf( ioQQQ,
00066 " ConvIoniz4>>>>>>>>>>exit without converging after %i tries!!!!\n", LoopLimit);
00067 }
00068
00069
00070
00071 }
00072
00073 return 0;
00074 }