sibc1st.h

Go to the documentation of this file.
00001 
00026 /****************************************************************************/
00027 /*                                                                          */
00028 /* include files                                                            */
00029 /*            system include files                                          */
00030 /*            application include files                                     */
00031 /*                                                                          */
00032 /****************************************************************************/
00033 
00034 #ifndef __SIBC1ST__
00035 #define __SIBC1ST__
00036 
00037 // include standard C header files
00038 #include <math.h>
00039 #include <stdlib.h>
00040 #include <stdio.h>
00041 #include <string.h>
00042 
00043 // include UG header files
00044 #include "gm.h"                             /* for data structure                                                */
00045 #include "shapes.h"                         /* general element shape calculations                                */
00046 #include "ugstruct.h"                       /* for GetStringValue                                                */
00047 #include "misc.h"                           /* for MIN, MAX, PI, ...                                             */
00048 #include "ugdevices.h"                      /* for UserWrite, PrintErrorMessage                                  */ 
00049 #include "commands.h"                       /* for GetCurrentMultigrid                                           */
00050 #include "cmdint.h"                         /* for CreateCommand                                                 */
00051 #include "cmdline.h"                        /* for command line processing                                       */
00052 #include "general.h"                        /* for general desclarations                                         */
00053 #include "np.h"                             /* for NUMPROC implementation                                        */
00054 #include "assemble.h"                       /* for CreateCLASS implementation                                    */
00055 #include "compiler.h"
00056 #include "namespace.h"
00057 
00058 // include proprietary header files
00059 #include "disconst.h"                       /* discretization constants                                          */
00060 #include "tdwaveforms.h"                    /* time doman source waveforms                                       */
00061 #include "aqhdSysParams.h"                  /* get system parameters from standard include file                  */
00062 #include "aqhdReleaseInfo.h"                /* get release information                                           */
00063 #include "aqhdPhysicoMath.h"                /* get mathematical & physical constants                             */
00064 #include "aqhdBaseTypes.h"                  /* get mathematical & physical constants                             */
00065 #include "sibc1stdisc.h"                     /* get discretization of Maxwell equations                           */
00066 #include "whitney.h"                        /* include basis functions                                           */
00067 #include "linmaterials.h"                   /* include NUMPROC definitions for linear, non-dispersive materials  */
00068 #include "iinternalsrc.h"                   /* include NUMPROC definitions for internal excitation aka source    */ 
00069 #include "auxiliary.h"                      /* auxiliary functions for matrix output etc.                        */
00070 
00071 /****************************************************************************/
00072 /*                                                                          */
00073 /* defines in the following order                                           */
00074 /*                                                                          */
00075 /*        compile time constants defining static data size (i.e. arrays)    */
00076 /*        other constants                                                   */
00077 /*        macros                                                            */
00078 /*                                                                          */
00079 /****************************************************************************/
00080 
00081 #define T_SIBC1ST_CLASS_NAME "sibc1stclass"
00082 
00083 /****************************************************************************/
00084 /*                                                                          */
00085 /* data structures used in this source file (exported data structures are   */
00086 /*        in the corresponding include file!)                               */
00087 /*                                                                          */
00088 /****************************************************************************/
00089 
00090 /* declare NUMPROC class and methods for 'NP_IMPLICIT_TIME_DOMAIN_INTEGRATION' */
00091 
00092 typedef struct
00093 {
00094     NP_BASE base;                              // inherits base class
00095 
00096     NP_LINEAR_MATERIALS *linmat;               // pointer to NUMPROC that provides linear, non-dispersive electrical materials
00097     NP_IMPLICIT_INTERNAL_SOURCE *iinternalsrc; // pointer to NUMPROCE that provides internal source for the electric field
00098 
00099     DOUBLE dt;                                 // time step for explicit scheme
00100     DOUBLE t;                                  // current time
00101 
00102     DOUBLE frequency0;                         // frequency at which we evaluate the surface resistance and inductance
00103     DOUBLE sigmasurface;                       // the conductivity of the boundary material
00104     DOUBLE mrsurface;                          // the relative magnetic permeability of the boundary material
00105 
00106     DOUBLE rs;                                 // surface resistance, derived from numproc parameters
00107     DOUBLE ls;                                 // surface inductance, derived from numproc parameters
00108 
00109     INT fl;                                    // from level with respect to multigrid
00110     INT tl;                                    // to level with respect to multigrid
00111 
00112     VECDATA_DESC* efldp;                       // pointer to electric field vector at t_(n+1)
00113     VECDATA_DESC* efldn;                       // pointer to electric field vector at t_n
00114     VECDATA_DESC* efldm;                       // pointer to electric field vector at t_(m-1)
00115  
00116     VECDATA_DESC* rhs;                         // pointer to right hand side vector
00117     VECDATA_DESC* force;                       // pointer to excitation aka force vector
00118 
00119     MATDATA_DESC* tmat;                        // pointer to [T_ij] matrix structure
00120     MATDATA_DESC* smat;                        // pointer to [S_ij] matrix structure
00121     
00122     MATDATA_DESC* rmat;                        // pointer to [R_ij] matrix structure
00123     MATDATA_DESC* prmat;                       // pointer to [PR_ij] matrix structure, used for resistive sibc matrix
00124     MATDATA_DESC* plmat;                       // pointer to [PR_ij] matrix structure, used for inductive sibc matrix
00125 
00126     MATDATA_DESC* amat;                        // pointer to matrix A in final system A * x = rhs
00127 
00128     VECDATA_DESC* hv1;                         // pointer to auxiliary vector, used in implicit time update scheme
00129     VECDATA_DESC* hv2;                         // pointer to auxiliary vector, used in implicit time update scheme
00130 
00131     MATDATA_DESC* hmat1;                       // pointer to auxiliary matrix structure, used in implicit time update scheme
00132     MATDATA_DESC* hmat2;                       // pointer to auxiliary matrix structure, used in implicit time update scheme
00133 
00134     INT (*Assemble)(NP_BASE *base, INT, char**);          // pointer to Assembling function
00135     INT (*PreProcess)(NP_BASE *base, INT, char**);        // pointer to PreProcessing function
00136     INT (*PostProcess)(NP_BASE *base, INT, char**);       // pointer to PostProcessing function
00137 
00138 } NP_SIBC1ST_SOLVER;
00139 
00140 
00144 INT InitSIBC1st(void); /* check class & methods into UG */
00145 
00146 
00147 #endif
00148 

Generated on Fri Oct 26 14:04:29 2007 for acheron3d by  doxygen 1.4.7