00001 // copyright by benedikt oswald, all rights reserved, 2002-2006. 00002 // project - aqhdes2003 00003 // file name - dlz.c 00004 // file type - C include file 00005 // objective - define NUMPROC dlz to model discrete material layers in the z direction of the CoD 00006 // inheritance - derived from slocf.h 00007 // modified - 2004 aug 11, benedikt oswald, creation 00008 // modified - 00009 // required software - UG 3.1 or higher 00010 // file id - 00011 // feature - 00012 00013 #ifndef __DLZ__ 00014 #define __DLZ__ 00015 00016 // include standard header files 00017 #include <math.h> 00018 #include <stdlib.h> 00019 #include <stdio.h> 00020 #include <string.h> 00021 #include <time.h> 00022 00023 // include UG header files 00024 #include "gm.h" /* for data structure */ 00025 #include "ugstruct.h" /* for GetStringValue */ 00026 #include "misc.h" /* for MIN, MAX, PI, ... */ 00027 #include "ugdevices.h" /* for UserWrite, PrintErrorMessage */ 00028 #include "commands.h" /* for GetCurrentMultigrid */ 00029 #include "cmdint.h" /* for CreateCommand */ 00030 #include "cmdint.h" /* for CreateCommand */ 00031 #include "cmdline.h" /* for command line processing */ 00032 #include "general.h" /* for general desclarations */ 00033 #include "np.h" /* for NUMPROC implementation */ 00034 #include "assemble.h" /* for CreateCLASS implementation */ 00035 #include "pfile.h" /* header file for parallel file access */ 00036 #include "parallel.h" /* include parallel support */ 00037 #include "compiler.h" 00038 #include "namespace.h" 00039 00040 // include proprietary header files 00041 #include "aqhdSysParams.h" /* get system parameters from standard include file */ 00042 #include "aqhdReleaseInfo.h" /* get release information */ 00043 #include "aqhdPhysicoMath.h" /* get release information */ 00044 #include "linmaterials.h" /* get declaration of base NUMRPOC for linear materials */ 00045 00046 00047 USING_UG_NAMESPACE 00048 USING_UGDIM_NAMESPACE 00049 00050 00051 /****************************************************************************/ 00052 /* */ 00053 /* data structures used in this source file (exported data structures are */ 00054 /* in the corresponding include file!) */ 00055 /* */ 00056 /****************************************************************************/ 00057 00058 /* declare NUMPROC class and methods for 'NP_DISCRETE_MATERIAL_LAYERS'; 00059 which implements a simple model for the situation of a GPR antenna 00060 lying on soil which variable electrical material properties in the z 00061 direction, i.e. in the direction going into the soil; we use the 00062 parameters given below to describe the distribution of material 00063 properties in the air-soil configuration: 00064 00065 - electric material properties vary in the z dimension only 00066 - z axis is directed as in cartesian coordinate system, i.e z=0 at bottom 00067 - fraction of interval filled with air material properties 00068 - use NUMPROC NP_LINEAR_MATERIALS, defined in linmaterials.h 00069 */ 00070 00071 struct np_discrete_layers_z 00072 { 00073 NP_LINEAR_MATERIALS linmat; // uses NP_LINEARMATERIALS NUMPROC 00074 00075 INT nl; // number of layers in z direction 00076 DOUBLE hz; // length of interval over which material properties vary 00077 00078 DOUBLE *lthickness; // tickness of layer in absolute dimensions 00079 DOUBLE *er; // array stores relative permittivity values of discrete layers 00080 DOUBLE *mr; // array stores relative permeability values of discrete layers 00081 DOUBLE *sigma; // array stores ohmic conductivity of discrete layers 00082 DOUBLE *zintrfc; // maximum z coordinate of a layer 00083 00084 DOUBLE xmin; // for definition of air space between layers stratified in z direction and truncation of CoD 00085 DOUBLE xmax; // for definition of air space between layers stratified in z direction and truncation of CoD 00086 DOUBLE ymin; // for definition of air space between layers stratified in z direction and truncation of CoD 00087 DOUBLE ymax; // for definition of air space between layers stratified in z direction and truncation of CoD 00088 }; 00089 typedef struct np_discrete_layers_z NP_DISCRETE_LAYERS_Z; 00090 00091 INT InitDLZ(void); /* check class & methods into UG */ 00092 00093 #endif