/* Este programa: 1.lee desde la linea de comando un conjunto de parametros, 2.inicializa el generador de numeros aleatorios, 3.escribe algo a disco 4.sale */ #include #include // '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 L,N; // Lado y tamanio int **s; // Matriz de spines (declaracion "puntero a puntero") 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!=8){ fprintf(stderr,"Usage:\n"); fprintf(stderr,"ising2d outFileName L 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] L = atoi(argv[2]); kT_J = atof(argv[3]); nSep = atoi(argv[4]); nSal = atoi(argv[5]); nTer = atoi(argv[6]); seed = atoi(argv[7]); N = L*L; //cuantos spines en total? //Inicializo el generador de numeros aleatorios srand(seed); //Imprimo a pantalla los valores de inicializacion fprintf(stdout,"Parametros de la corrida:\n"); fprintf(stdout,"\tArchivo salida : %s\n",fName); fprintf(stdout,"\tNumero de spines: %d\n",N); fprintf(stdout,"\tkT_over_J : %f\n",kT_J); fprintf(stdout,"\tnSep : %d\n",nSep); fprintf(stdout,"\tnSal : %d\n",nSal); fprintf(stdout,"\tnTer : %d\n",nTer); fprintf(stdout,"\tseed : %d\n",seed); fprintf(stdout,"E0 %f - M0 %f\n",E,M); //Guardo a disco //primero abro la conexion fp = fopen(fName,"w+"); if(fp==NULL){ //si algo paso, salgo. fprintf(stderr,"No pude abrir %s para escritura!\n",fName); return(-1); } //escribo a disco fprintf(fp,"%d, %f, %d, %d, %d, %d\n", L, kT_J, nSep, nSal, nTer, seed); /////// COMIENZO CODIGO /////////////////// //////// FIN CODIGO ////////////////////// fclose(fp); //cierro la coneccion al archivo de salida return(1); }