00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __ALL_PML__
00016 #define __ALL_PML__
00017
00018 #include <math.h>
00019 #include <stdlib.h>
00020 #include <stdio.h>
00021 #include <string.h>
00022
00023 #include "gm.h"
00024 #include "shapes.h"
00025 #include "ugstruct.h"
00026 #include "misc.h"
00027 #include "ugdevices.h"
00028 #include "commands.h"
00029 #include "cmdint.h"
00030 #include "cmdline.h"
00031 #include "general.h"
00032 #include "np.h"
00033 #include "assemble.h"
00034 #include "parallel.h"
00035
00036
00037 #include "disconst.h"
00038 #include "tdwaveforms.h"
00039 #include "aqhdSysParams.h"
00040 #include "aqhdReleaseInfo.h"
00041 #include "aqhdPhysicoMath.h"
00042 #include "aqhdBaseTypes.h"
00043 #include "whitney.h"
00044 #include "linmaterials.h"
00045 #include "iinternalsrc.h"
00046 #include "auxiliary.h"
00047
00048
00049
00050
00051 #define PML_BAD 1
00052 #define PML_OK 0
00053 #define TIME_METHOD_BAD 3
00054 #define PML_METHOD_BAD 3
00055 #define BOUNDARY_BAD 3
00056 #define PML_NO_CONNECTION 2
00057
00058
00059
00060 #define NUM_OF_BOUNDARY_SEGMENTS 6
00061
00062
00063 #define NEWMARK_METHOD "newmark"
00064 #define CENTRAL_DIFFERENCE "central"
00065
00066 #define PML_TYPE_CONST "constant"
00067 #define PML_TYPE_LINEAR "linear"
00068 #define NO_PML_TYPE "pmlfree"
00069
00070 #define PEC_BOUNDARY "pec"
00071 #define ABC_BOUNDARY "abc"
00072
00073 #define T_PML_SOLVER_CLASS_NAME "pmlclass"
00074 #define CONV_CLASS_NAME "conv"
00075
00076
00077 #define CONV_GQ_ORDR 4
00078 #define QUAD_POINTS 15
00079
00080
00081
00082
00083 typedef struct
00084 {
00085 INT elemid;
00086
00087 DOUBLE g_i_x[6][QUAD_POINTS];
00088 DOUBLE g_i_y[6][QUAD_POINTS];
00089 DOUBLE g_i_z[6][QUAD_POINTS];
00090
00091 } CONV_PER_ELEM_POINT_COMP;
00092
00093
00094
00095
00096
00097
00098 typedef struct
00099 {
00100 INT elemid;
00101
00102 DOUBLE psi_j_xi[6][3];
00103 DOUBLE Sx_plus_Tx[6][6];
00104 DOUBLE Sy_plus_Ty[6][6];
00105 DOUBLE Sz_plus_Tz[6][6];
00106 } CONV_PER_ELEM;
00107
00108
00109
00110
00111
00112 typedef struct
00113 {
00114 NP_BASE base;
00115
00116 NP_LINEAR_MATERIALS *linmat;
00117 NP_IMPLICIT_INTERNAL_SOURCE *internalsrc;
00118
00119 DOUBLE dt;
00120 DOUBLE t;
00121 INT timestep;
00122
00123 INT fl;
00124 INT tl;
00125
00126 char timetype[MAX_NUM_CHAR_FILENAME];
00127
00128 DOUBLE beta;
00129 DOUBLE gamma;
00130
00131 char pmltype[MAX_NUM_CHAR_FILENAME];
00132
00133 char boundary[MAX_NUM_CHAR_FILENAME];
00134
00135 INT anzahl;
00136 CONV_PER_ELEM *eleminfo_c;
00137 CONV_PER_ELEM_POINT_COMP *eleminfo;
00138
00139 DOUBLE pml_dist_x1;
00140 DOUBLE pml_dist_x2;
00141 DOUBLE pml_dist_y1;
00142 DOUBLE pml_dist_y2;
00143 DOUBLE pml_dist_z1;
00144 DOUBLE pml_dist_z2;
00145
00146 DOUBLE sig_x1_inner;
00147 DOUBLE sig_x1_outer;
00148 DOUBLE sig_x2_inner;
00149 DOUBLE sig_x2_outer;
00150 DOUBLE sig_y1_inner;
00151 DOUBLE sig_y1_outer;
00152 DOUBLE sig_y2_inner;
00153 DOUBLE sig_y2_outer;
00154 DOUBLE sig_z1_inner;
00155 DOUBLE sig_z1_outer;
00156 DOUBLE sig_z2_inner;
00157 DOUBLE sig_z2_outer;
00158
00159 VECDATA_DESC* efldp;
00160 VECDATA_DESC* efldn;
00161 VECDATA_DESC* efldm;
00162 VECDATA_DESC* efldo;
00163
00164 VECDATA_DESC* rhs;
00165
00166 VECDATA_DESC* force;
00167 VECDATA_DESC* forcep;
00168 VECDATA_DESC* forcen;
00169 VECDATA_DESC* forcem;
00170
00171 VECDATA_DESC* g_vecp;
00172 VECDATA_DESC* g_vecn;
00173 VECDATA_DESC* g_vecm;
00174
00175 MATDATA_DESC* pmat;
00176 MATDATA_DESC* nmat;
00177 MATDATA_DESC* mmat;
00178
00179 MATDATA_DESC* tmat;
00180 MATDATA_DESC* tpmat;
00181 MATDATA_DESC* tqmat;
00182 MATDATA_DESC* smat;
00183 MATDATA_DESC* rmat;
00184 MATDATA_DESC* xmat;
00185
00186 MATDATA_DESC* hmat;
00187
00188 INT (*Assemble)(NP_BASE *base, INT, char**);
00189 INT (*PreProcess)(NP_BASE *base, INT, char**);
00190 INT (*PostProcess)(NP_BASE *base, INT, char**);
00191
00192 } NP_PML_SOLVER;
00193
00194
00195
00196
00197
00198 INT InitPMLTimeIntegration(void);
00199
00200
00201
00202
00203 #endif
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217