mat3d.h

00001 // copyright by benedikt oswald, all rights reserved, 2002-2006.
00002 // project - aqhdes2003
00003 // file name - mat3d.c
00004 // file type - C include file
00005 // objective - define NUMPROC mat3d to model fully arbitrary 3D material properties
00006 // inheritance - derived from dlz.h
00007 // modified - 2004 aug 12, benedikt oswald, creation
00008 // modified -
00009 // required software - UG 3.1 or higher
00010 // feature - defines NUMPROC mat3d to model fully arbitrary 3D material properties,
00011 // feature - such as dielectric permittivitiy, magnetic permeability and ohmic
00012 // feature - conductivitiy; at present dispersion is not modeled.
00013 
00014 #ifndef __MATERIALS_3D__
00015 #define __MATERIALS_3D__
00016 
00017 // include standard header files
00018 #include <math.h>
00019 #include <stdlib.h>
00020 #include <stdio.h>
00021 #include <string.h>
00022 #include <time.h>
00023 
00024 // include UG header files
00025 #include "gm.h"                             /* for data structure                                   */
00026 #include "ugstruct.h"                       /* for GetStringValue                                   */
00027 #include "misc.h"                           /* for MIN, MAX, PI, ...                                */
00028 #include "ugdevices.h"                      /* for UserWrite, PrintErrorMessage                     */ 
00029 #include "commands.h"                       /* for GetCurrentMultigrid                              */
00030 #include "cmdint.h"                         /* for CreateCommand                                    */
00031 #include "cmdint.h"                         /* for CreateCommand                                    */
00032 #include "cmdline.h"                        /* for command line processing                          */
00033 #include "general.h"                        /* for general desclarations                            */
00034 #include "np.h"                             /* for NUMPROC implementation                           */
00035 #include "assemble.h"                       /* for CreateCLASS implementation                       */
00036 #include "pfile.h"                          /* header file for parallel file access                 */
00037 #include "parallel.h"                       /* include parallel support                             */
00038 
00039 // include proprietary header files
00040 #include "aqhdSysParams.h"                  /* get system parameters from standard include file     */
00041 #include "aqhdReleaseInfo.h"                /* get release information                              */
00042 #include "aqhdPhysicoMath.h"                /* get release information                              */
00043 #include "linmaterials.h"                   /* get declaration of base NUMRPOC for linear materials */
00044 
00045 /****************************************************************************/
00046 /*                                                                          */
00047 /* data structures used in this source file (exported data structures are   */
00048 /*        in the corresponding include file!)                               */
00049 /*                                                                          */
00050 /****************************************************************************/
00051 
00052 /* declare NUMPROC class and methods for 'NP_MATERIALS_3D';
00053    which implements a fully flexible 3 dimensional material assignment on
00054    a per element basis; this is realized through querying the sumbdomain
00055    of an element and using the respective material properties that are
00056    assigned to this specific subdomain.
00057 */
00058 
00059 struct np_materials_3d
00060 {
00061     NP_LINEAR_MATERIALS linmat;        // uses NP_LINEARMATERIALS NUMPROC
00062 
00063     INT nmatdef;                       // number of material definitions
00064     
00065     char **matname;                    // array of material names
00066     DOUBLE *er;                        // array stores relative permittivity values of defined materials
00067     DOUBLE *mr;                        // array stores relative permeability values of defined materials
00068     DOUBLE *sigma;                     // array stores ohmic conductivity of defined materials
00069 
00070     INT nsubdom;                       // number of subdomains used in mat3d NUMPROC class instance; starts at 0
00071     INT *sdid;                         // stores ID's of subdomains defined in mat3d NUMPROC class instance;
00072     INT *sdm;                          // array stores material index belonging to the respectiv subdomain
00073 
00074 };
00075 typedef struct np_materials_3d NP_MATERIALS_3D;
00076 
00077 INT InitMaterials3d(void); /* check class & methods into UG */
00078 
00079 #endif

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