/* Este programa: 1.lee desde la linea de comando un conjunto de parametros, 2.inicializa el generador de numeros aleatorios, 4.la inicializa al azar 5.muestra la matriz en pantalla 5.escribe algo a disco 6.sale */ #include #include int L = 32; // 'main' es la funcion principal // Posee dos argumentos: 'nargs' y 'argv' que son variables utilizadas para leer // la 'linea de comandos', que es por donde se le suministrara // al programa los parametros de la corrida int main(int nargs, char **argv){ //Variables: char *fName; // nombre de archivo de salida int N; // Lado int s[L][L]; // Matriz de spines double betaJ,kT_J; // coupling normalizado a kT int nSep, nSal, nStep, nTer; // variables para configurar sampleo int seed; // semilla de generador de numeros aleatorios FILE *fp; //puntero a un tipo especial de dato (FILE) usado //para escribir a disco //si el nro de argumentos leidos por linea de comando es diferente a 8 //devuelve un mensaje de uso y se aborta la ejecucion if(nargs!=7){ fprintf(stderr,"Usage:\n"); fprintf(stderr,"ising2d outFileName kT_over_J nSep nSal nTer seed\n"); return(-1); } // asigno los valores leidos por linea de comando // a las variables respectivas. fName = argv[1]; //hago que fName 'apunte' a la direccion de memoria //referenciada por argv[1] kT_J = atof(argv[2]); nSep = atoi(argv[3]); nSal = atoi(argv[4]); nTer = atoi(argv[5]); seed = atoi(argv[6]); N = L*L; //cuantos spines en total? //Inicializo el generador de numeros aleatorios srand(seed); //Lleno la matriz s con -1's y 1's al azar for(i=0;i 0.5){ //el nro obtenido esta en la segunda mitad del itnervalo? iaux = 1; }else{ iaux = -1; } s[i][j] = iaux; } } //Calculo E y M iniciales E = 0; M = 0; for(i=0;i