Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - DGoz

#1
Programación C/C++ / Re:
23 Febrero 2015, 08:59 AM
Ya esta solucionado y el programa corre correctamente. Realmente necesitaba una matriz de 21x21. Así que cambié a u[21][21]. También he implementado el resto de recomendaciones (en los bucles j == 20)

Gracias por vuestra ayuda y consejos.

Saludos.
#2
Programación C/C++ / Re: Problema codigo en C
23 Febrero 2015, 02:44 AM
Muchas gracias por tu respuesta.

Tendré en cuenta para el futuro, que al declarar [20][20] estoy declarando 0 al 19.

Por mi parte queda cerrado el tema.

Un saludo.
#3
Programación C/C++ / Problema codigo en C
23 Febrero 2015, 02:16 AM
Hola a todos.

Soy nuevo programando y estoy tratando de desarrollar una herramienta para resolver una EDP hiperbólica. El caso es que me compila, pero al correr me da un error y se queda colgada. Dejo aquí el código.

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("********************************\n");
printf("********************************\n");
printf("*                              *\n");
printf("*           LW Solver          *\n");
printf("*                              *\n");
printf("********************************\n");

printf("This program solves the hyperbolic EDP of a bar vibration\n");
printf("The dimensions of the bar are L=1 m, D= 0,3 m. The material of the\n");
printf("bar is steel, with E=200 GPa and rho=7850 kg/m^3. dx=0.05 m\n");
printf("dt=0.05 s. The solution will be write in a .dat file\n\n");

/* Variables */

int i,j;
double u[20][20];

FILE *fp;

/* Escritura del fichero solucion */
fp = fopen("Solution_LW-Solver_005.dat","w");

/*----------------------------------------------------------------------------*/

fprintf(fp,"********************************\n");
fprintf(fp,"********************************\n");
fprintf(fp,"*                              *\n");
fprintf(fp,"*           LW Solver          *\n");
fprintf(fp,"*                              *\n");
fprintf(fp,"********************************\n");

fprintf(fp,"This program solves the hyperbolic EDP of a bar vibration\n");
fprintf(fp,"The dimensions of the bar are L=1 m, D= 0,3 m. The material of\n");
fprintf(fp,"bar is steel, with E=200 GPa and rho=7850 kg/m^3. dx=0.05 m,\n");
fprintf(fp,"dt=0.05 s.\n\n");


/*----------------------------------------------------------------------------*/

printf("Solving...\n");
fprintf(fp, "Solution for dt=0.05m\n\n");
fprintf(fp,"*************************************************************\n\n");
fprintf(fp,"Calculated values are:\n\n");
/* Condiciones de contorno e iniciales */

/* Condicion de desplazamiento nulo en el origen */
for (j=0; j<=20; j++) {
   u[0][j]=0;
}
printf("\n\n1....");
/* Condicion de desplazamiento inicial nulo */
for (i=0; i<=20; i++) {
   u[i][0]=0;
}
printf("\n\n2....");
/* Ecuaciones iniciales */

/* Ecuacion inicial para todos los nodos salvo para el primero y el ultimo */
for (i=1; i <=19; i++) {
   u[i][1]=1;
}
printf("\n\n3....");
/* Ecuacion del nodo del extremo */
u[20][1]=0;
printf("\n\n4....");
/* Resolucion iterativa */
/* Step 1 par; Step 2 impar */

for (j=2; j<=20; j++) {
   if (j%2 == 0)
   {
       for (i=1; i<=19; i++) {
         u[i][j]=0.5*(u[i+1][j-1]+u[i-1][j-1])-0.08*(u[i+1][j-1]-u[i-1][j-1]);
       }
           u[20][j]=u[19][j-1];        
   }
   else if (j%2 !=0)
   {
       for (i=1; i<=19; i++) {
         u[i][j]=u[i][j-2]-0.16*(u[i+1][j-1]-u[i-1][j-1]);
       }
         u[20][j]=u[20][j-2];
   }
}
     
printf("\n\n5....");

for (i=0; i<=20; i++) {
   for (j=0; j<=20; j++) {
       fprintf(fp,"U%d%d= %12.4e C\n", i, j, u[i][j]);
   }
}

printf("\n\nSolved!");

fprintf(fp,"\n\nEND DATA");
fclose(fp);
 
 printf("\n\nPress enter to continue ...");
 getchar();
 return 0;
}


Espero que alguien pueda ayudarme. Asimismo agradecería todo tipo de consejos.

Muchas gracias.

Saludos.