00001 /* 00002 %M This modules contains the driver methods to solve a probleam using the 00003 dynamic relax algorithm. 00004 %a Joao Luiz Elias Campos. 00005 %d September 5th, 1998. 00006 %r $Id: drv.c,v 1.1 2004/06/22 05:29:58 joaoluiz Exp $ 00007 %w (C) COPYRIGHT 1995-1996, Eduardo Nobre Lages. 00008 (C) COPYRIGHT 1997-1999, Joao Luiz Elias Campos. 00009 All Rights Reserved 00010 Duplication of this program or any part thereof without the express 00011 written consent of the author is prohibited. 00012 */ 00013 /* Modificado por André Luis Muller: 06/2007 00014 Adição das funções: 00015 ImpLinearInit 00016 ImpNRMInit 00017 ImpBFGSInit 00018 HibridInit 00019 */ 00020 00021 /* 00022 ** ------------------------------------------------------------------------ 00023 ** Global variables and symbols: 00024 */ 00025 #include <stdio.h> 00026 #include <stdlib.h> 00027 #include <string.h> 00028 00029 #include "drv.h" 00030 #include "fem.h" 00031 #include "load.h" 00032 #include "elm.h" 00033 #include "node.h" 00034 #include "alg.h" 00035 #include "rio.h" 00036 #include "nfi.h" 00037 #include "load.h" 00038 #include "xgplib.h" 00039 00040 /* 00041 %V Driver class 00042 */ 00043 sDrvClass DrvClass[NumDrvTypes]; 00044 00045 00046 /* 00047 %V Driver object 00048 */ 00049 sDriver *DrvObj = 0L; 00050 00051 00052 /* 00053 ** ------------------------------------------------------------------------ 00054 ** Local variables and symbols: 00055 */ 00056 00057 /* 00058 ** ------------------------------------------------------------------------ 00059 ** Local functions: 00060 */ 00061 void StandardInit ( void ); 00062 void StandardVEInit ( void ); 00063 void StandardVEFlacInit( void ); 00064 void RezoneInit ( void ); 00065 void LoadStepInit ( void ); 00066 void ImpLinearInit ( void ); 00067 void ImpNRMInit ( void ); 00068 void ImpBFGSInit ( void ); 00069 void HybridInit ( void ); 00070 void LoadCaseInit ( void ); 00071 00072 00073 /* 00074 ** ------------------------------------------------------------------------ 00075 ** Public functions: 00076 */ 00077 00078 /* 00079 %F This function initializes the globally shared "DrvClass" variable. This 00080 variable holds the pointers to the necessary functions which implement 00081 the driver class methods. 00082 */ 00083 void DriverInit( void ) 00084 { 00085 int i; 00086 00087 /* Define the subclasses initialization methods 00088 */ 00089 DrvClass[STANDARD].init = StandardInit; 00090 DrvClass[STANDARD_VE].init = StandardVEInit; 00091 DrvClass[STANDARD_VE_FLAC].init = StandardVEFlacInit; 00092 DrvClass[REZONE].init = RezoneInit; 00093 DrvClass[LOAD_STEP].init = LoadStepInit; 00094 DrvClass[IMPLINEAR].init = ImpLinearInit; 00095 DrvClass[IMPNRM].init = ImpNRMInit; 00096 DrvClass[IMPBFGS].init = ImpBFGSInit; 00097 DrvClass[HYBRID].init = HybridInit; 00098 DrvClass[LOAD_CASE].init = LoadCaseInit; 00099 00100 for( i = 0; i < NumDrvTypes; i++ ) 00101 DrvInit( i ); 00102 00103 } /* End of DriverInit */ 00104 00105 00106 /* 00107 %F This function release memory used by driver super-class. 00108 */ 00109 void DriverFree( void ) 00110 { 00111 00112 } /* End of DriverFree */ 00113 00114 00115 /* ======================================================= End of File */ 00116