00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 // /////////////////////////////////////////////////////////////////////////// 00014 // include the usual libraries (works on gcc and VC) 00015 // /////////////////////////////////////////////////////////////////////////// 00016 00017 #include <iostream> 00018 #include <fstream> 00019 #include <cstdio> 00020 #include <cstdlib> 00021 #include <cmath> 00022 #include <cstring> 00023 #include <ctime> 00024 #include <cassert> 00025 #include <typeinfo> 00026 #include <malloc.h> 00027 #include <string> 00028 #include <vector> 00029 #include <map> 00030 #include <climits> 00031 #ifndef NO_POSIX 00032 #include <unistd.h> 00033 #include <sys/time.h> 00034 #include <sys/file.h> 00035 #include <sys/types.h> 00036 #include <sys/stat.h> 00037 #include <sys/socket.h> 00038 #include <fcntl.h> 00039 #endif 00040 using namespace std; 00041 #define endl "\n" 00042 00043 // /////////////////////////////////////////////////////////////////////////// 00044 // this file includes the version number 00045 // /////////////////////////////////////////////////////////////////////////// 00046 #include "mdp_version.h" 00047 00048 // /////////////////////////////////////////////////////////////////////////// 00049 // all gobal macros used by MDP 00050 // /////////////////////////////////////////////////////////////////////////// 00051 #include "mdp_macros.h" 00052 00053 // /////////////////////////////////////////////////////////////////////////// 00054 // all global varibales except mdp,mpi and mdp_random 00055 // /////////////////////////////////////////////////////////////////////////// 00056 #include "mdp_global_vars.h" 00057 00058 // /////////////////////////////////////////////////////////////////////////// 00059 // faster dynamic allocation (no excpections) 00060 // /////////////////////////////////////////////////////////////////////////// 00061 #include "mdp_dynalloc.h" 00062 00063 // /////////////////////////////////////////////////////////////////////////// 00064 // function to convert endianess 00065 // /////////////////////////////////////////////////////////////////////////// 00066 #include "mdp_endianess_converter.h" 00067 00068 // /////////////////////////////////////////////////////////////////////////// 00069 // this is the official mdp_timer (replaces JIM_timer since not portable 00070 // /////////////////////////////////////////////////////////////////////////// 00071 #include "mdp_timer.h" 00072 00073 // /////////////////////////////////////////////////////////////////////////// 00074 // mdp implementation of complex numbres (portable ansi) 00075 // /////////////////////////////////////////////////////////////////////////// 00076 #include "mdp_complex.h" 00077 00078 // /////////////////////////////////////////////////////////////////////////// 00079 // integer delta function 00080 // /////////////////////////////////////////////////////////////////////////// 00081 #include "mdp_delta.h" 00082 00083 // /////////////////////////////////////////////////////////////////////////// 00084 // implementation of multidimentional array, better than STL 00085 // (class mdp_array used to be class DynamicArray) 00086 // /////////////////////////////////////////////////////////////////////////// 00087 #include "mdp_array.h" 00088 00089 // /////////////////////////////////////////////////////////////////////////// 00090 // this file includes stuff for sse2 optimization 00091 // /////////////////////////////////////////////////////////////////////////// 00092 #if defined(SSE2) 00093 #include "fermiqcd_sse.h" 00094 #endif 00095 00096 // /////////////////////////////////////////////////////////////////////////// 00097 // implementation of the mdp_matrix object 00098 // (class mdp_matrix is a more general implementation of class mdp_matrix) 00099 // /////////////////////////////////////////////////////////////////////////// 00100 #include "mdp_matrix.h" 00101 00102 // /////////////////////////////////////////////////////////////////////////// 00103 // class for logging (not very developed!) 00104 // /////////////////////////////////////////////////////////////////////////// 00105 #include "mdp_log.h" 00106 00107 // /////////////////////////////////////////////////////////////////////////// 00108 // parallel simulator 00109 // handy for debugging, multithreading and mosix systems 00110 // /////////////////////////////////////////////////////////////////////////// 00111 #ifndef NO_POSIX 00112 #include "mdp_psim.h" 00113 #endif 00114 00115 // /////////////////////////////////////////////////////////////////////////// 00116 // this is a wrapper to Message Passing Interface (is one uses it) 00117 // replace this funcitons to change communication protocol 00118 // /////////////////////////////////////////////////////////////////////////// 00119 #include "mdp_communicator.h" 00120 00121 // /////////////////////////////////////////////////////////////////////////// 00122 // this defined the class mdp_prng and the obj mdp_random 00123 // (attantion that ::SU<T>(int n) only works with gcc, 00124 // VC does not support templates, therefore ::SU(int n) only for float) 00125 // /////////////////////////////////////////////////////////////////////////// 00126 #include "mdp_prng.h" 00127 00128 // /////////////////////////////////////////////////////////////////////////// 00129 // mdp_jackboot is a class for statictical analysis 00130 // /////////////////////////////////////////////////////////////////////////// 00131 #include "mdp_jackboot.h" 00132 00133 // /////////////////////////////////////////////////////////////////////////// 00134 // this is a collection of possible lattice topologies 00135 // /////////////////////////////////////////////////////////////////////////// 00136 #include "mdp_topologies.h" 00137 00138 // /////////////////////////////////////////////////////////////////////////// 00139 // a collection of possible lattice partitionings 00140 // /////////////////////////////////////////////////////////////////////////// 00141 #include "mdp_partitionings.h" 00142 00143 00144 // /////////////////////////////////////////////////////////////////////////// 00145 // implementation of the class mdp_lattice 00146 // (used to ge generic_lattice) 00147 // /////////////////////////////////////////////////////////////////////////// 00148 #include "mdp_lattice.h" 00149 00150 // /////////////////////////////////////////////////////////////////////////// 00151 // implementation of a vector on a lattice (used internally for conversions) 00152 // /////////////////////////////////////////////////////////////////////////// 00153 #include "mdp_vector.h" 00154 00155 // /////////////////////////////////////////////////////////////////////////// 00156 // class mdp_site (used to be site) a point on a lattice 00157 // /////////////////////////////////////////////////////////////////////////// 00158 #include "mdp_site.h" 00159 00160 // /////////////////////////////////////////////////////////////////////////// 00161 // implementation of the class mdp_field<> 00162 // (used to be generic_field<>) 00163 // /////////////////////////////////////////////////////////////////////////// 00164 #include "mdp_field.h" 00165 00166 // /////////////////////////////////////////////////////////////////////////// 00167 // implementation of the communicaton function mdp_field::update() 00168 // /////////////////////////////////////////////////////////////////////////// 00169 #include "mdp_field_update.h" 00170 00171 // /////////////////////////////////////////////////////////////////////////// 00172 // implementation of the I/O function mdp_field::load() 00173 // /////////////////////////////////////////////////////////////////////////// 00174 #include "mdp_field_load.h" 00175 00176 // /////////////////////////////////////////////////////////////////////////// 00177 // implementation of the I/O function mdp_field::save() 00178 // /////////////////////////////////////////////////////////////////////////// 00179 #include "mdp_field_save.h" 00180 00181 #ifdef INCLUDE_DEPRECATED_IO 00182 #include "mdp_deprecatedIO.h" 00183 #endif 00184 00185 // /////////////////////////////////////////////////////////////////////////// 00186 // an auxiliary function that returns (-1)^n 00187 // /////////////////////////////////////////////////////////////////////////// 00188 #include "mdp_mod2sign.h" 00189 00190 // /////////////////////////////////////////////////////////////////////////// 00191 // very clever function to compute permutations of lists 00192 // /////////////////////////////////////////////////////////////////////////// 00193 #include "mdp_permutations.h" 00194 00195 // /////////////////////////////////////////////////////////////////////////// 00196 // implementation of the class mdp_complex_field 00197 // /////////////////////////////////////////////////////////////////////////// 00198 #include "mdp_complex_field.h" 00199 00200 // /////////////////////////////////////////////////////////////////////////// 00201 // an mdp_field of matrices 00202 // (more general than mdp_matrix_field) 00203 // /////////////////////////////////////////////////////////////////////////// 00204 #include "mdp_matrix_field.h" 00205 00206 // /////////////////////////////////////////////////////////////////////////// 00207 // an mdp_field of a vector matrices 00208 // (more general than Nmdp_matrix_field) 00209 // /////////////////////////////////////////////////////////////////////////// 00210 #include "mdp_vector_field.h" 00211 00212 // /////////////////////////////////////////////////////////////////////////// 00213 // an mdp_field of vector (1xN matrix) 00214 // (more general than Vector_field) 00215 // /////////////////////////////////////////////////////////////////////////// 00216 #include "mdp_nmatrix_field.h" 00217 00218 // /////////////////////////////////////////////////////////////////////////// 00219 // compatibility functions map MDP 1.3 into MDP 2.0 or higher 00220 // (only the syntax of mdp_random::SU(int n) is not portable 00221 // everything else is portable if according to specs) 00222 // /////////////////////////////////////////////////////////////////////////// 00223 #include "mdp_compatibility_macros.h" 00224 00225 // /////////////////////////////////////////////////////////////////////////// 00226 // functions to prompt the user for input values 00227 // /////////////////////////////////////////////////////////////////////////// 00228 #include "mdp_prompt.h" 00229 00230 // /////////////////////////////////////////////////////////////////////////// 00231 // a container class for experimental results 00232 // /////////////////////////////////////////////////////////////////////////// 00233 #include "mdp_measure.h" 00234 00235 // /////////////////////////////////////////////////////////////////////////// 00236 // test almost all up to here 00237 // /////////////////////////////////////////////////////////////////////////// 00238 #include "mdp_matrix_test.h" 00239 #include "mdp_field_test.h" 00240 00241 // /////////////////////////////////////////////////////////////////////////// 00242 // various other utilities 00243 // /////////////////////////////////////////////////////////////////////////// 00244 #include "mdp_utils.h" 00245 #include "mdp_postscript.h" 00246
1.4.1