void getAndSet_applyUpdate(OccupancyMap& m, Probability (*updateFunc)(int x, int y)) { for(int x = m.minX(); x < m.maxX(); x++) { for(int y = m.minY(); y < m.maxY(); y++) { m.update(x, y, updateFunc(x, y)); } } }
void ParticleBatch2D::update() { for (int i = 0; i < maxParticles; i++) { if (myParticles[i].life > 0.0f) { updateFunc(myParticles[i]); myParticles[i].life -= decayRate; } } }
int main(int argc, char **argv){ // Archivo para imprimir las evolucion de u FILE *data = fopen("Navier-Stokes_LinearConvection.dat", "w"); // Numero de iteraciones en espacio y tiempo y sus respectivos dt, dx int n_x = atoi(argv[1]); int n_t = atoi(argc[2]); FLOAT dx = 2.0/(nx-1); FLOAT dt = 0.001; // Condicion inicial FLOAT *x0 = malloc(n_x*sizeof(FLOAT)); int j; for( j = 0; j < n_x; j++){ x0[0] = j*dx; } // Constante c de la ecuacion diferencial de Linear convection // Vector de evolucion de la velocidad u del fluido FLOAT *u = malloc(n_x *sizeof(FLOAT)); int i; u[i] = malloc(n_x*sizeof(FLOAT)); for( j = 0; j < n_x; j++ ){ u[j] = 1.0; } // Inicializa las condiciones iniciales en el vector u initCondition(u,x0,n_x); // Imprimir u for( i = 0; i < n_x-1; i++){ fprintf(data, "%f ", (float) u[i]); } fprintf(data, "%f\n", (float) u[i]); // Actualiza la funcion u for( j= 0; j < n_t; j++){ updateFunc(u,x0,n_x,dx,dt); // Imprimir la funcion u for( i = 0; i < n_x-1; i++){ fprintf(data, "%f ", (float) u[i]); } fprintf(data, "%f\n", (float) u[i]); } return 0; }
void LambdaView::update(float dt) { if (updateFunc) { updateFunc(dt); } }
int main( int argc, char** argv ){ printf("%f %f\n", alpha , dt); //--------------------------- // Declaración de Constantes //--------------------------- //Número de iteraciones en el tiempo int nt = atoi(argv[1]); // Archivo de texto de evolucion FILE *in = fopen("datos.dat","w"); // Contadores int i; int j; // Espacio FLOAT *x0 = malloc(nx*sizeof(FLOAT)); // Funcion de onda actual FLOAT *Im_p = malloc(nx*sizeof(FLOAT)); FLOAT *Re_p = malloc(nx*sizeof(FLOAT)); //------------------------------- // Solucion de la ED //------------------------------- // Llena el vector de posicion for( i = 0; i < nx; i++ ){ x0[i] = x_min + i*dx; } // Condicion inicial ( y de frontera ) initCondition( Re_p, Im_p, x0, nx ); // Imprime la condicion inicial FLOAT ro = 0; fprintf(in, "%f %f ", (float) x0[0], 0.0); for( i = 1; i < nx-1; i += (int) (nx-1)/imprx ){ ro = Im_p[i]*Im_p[i] + Re_p[i]*Re_p[i]; //printf("%f\n", ro, (float) ro); fprintf(in, "%f %f ", (float) x0[i], (float) ro); } fprintf(in, "%f %f\n", (float) x0[nx-1], 0.0); // Iteracion sobre el tiempo (se tiene que doblar el numero de pasos debido a la definicion de Re e Im en enteros y semienteros de tiempo) for( j = 0; j < 2*nt; j++ ){ //printf("%d\n", j); // Actualiza los vectores dependiendo del step de tiempo if( j%2 == 0 ){ // Copia RE FLOAT* tempR = malloc(nx*sizeof(FLOAT)); memcpy( tempR , Re_p, nx*sizeof(FLOAT) ); // Calcula el siguiente paso de tiempo para Re updateFunc( Re_p, Im_p, x0, nx, 1.0 ); // imprime ro (IM) lolol FLOAT ro = 0; if( j%impr == 0 ){ fprintf(in, "%f %f ", (float) x0[0], 0.0); } for( i = 1; i < nx-1; i += (int) (nx-1)/imprx ){ ro = Im_p[i]*Im_p[i] + tempR[i]*Re_p[i]; if( j%impr == 0 ){ //printf("%f\n", ro, (float) ro); fprintf(in, "%f %f ", (float) x0[i], (float) ro); } } if( j%impr == 0 ){ fprintf(in, "%f %f\n", (float) x0[nx-1], 0.0); } // Liberar memoria de la copia free( tempR ); } else{ // Copia IM FLOAT* tempI = malloc(nx*sizeof(FLOAT)); memcpy( tempI , Im_p, nx*sizeof(FLOAT) ); // Calcula el siguiente paso de tiempo para Im updateFunc( Im_p, Re_p, x0, nx, -1.0 ); // imprime ro (RE) lolol FLOAT ro = 0; if( j%impr == 0 ){ fprintf(in, "%f %f ", (float) x0[0], 0.0); } for( i = 1; i < nx-1; i += (int) (nx-1)/imprx ){ ro = Re_p[i]*Re_p[i] + tempI[i]*Im_p[i]; if( j%impr == 0 ){ fprintf(in, "%f %f ", (float) x0[i], (float) ro); } } if( j%impr == 0 ){ fprintf(in, "%f %f\n", (float) x0[nx-1], 0.0); } // Liberar memoria de la copia free( tempI ); } } return 0; }
int main(int argc, char **argv){ // Archivo para imprimir las evolucion de u FILE *data = fopen("Wave_Eq.dat", "w"); // Numero de iteraciones en espacio y tiempo y sus respectivos dt, dx int n_x = atoi(argv[1]); int n_t = atoi(argv[2]); //printf("%d \n", n_x ); FLOAT dx = L/(n_x-1); //printf("%f %d \n", L, n_x ); FLOAT dt = 2.0; // Parámetro de estabilidad (debe ser menor que 1) FLOAT r = c*(dt/dx); printf("%f \n", r); // Vector de posicion FLOAT *x0 = malloc(n_x*sizeof(FLOAT)); int j; for( j = 0; j < n_x; j++){ x0[j] = j*dx; } // Vector actual de la funcion de onda FLOAT *present_u = malloc(n_x *sizeof(FLOAT)); int i; present_u = malloc(n_x*sizeof(FLOAT)); // Condicion inicial initCondition(present_u,x0,n_x,dx); // Condiciones de frontera present_u[0] = 0; present_u[n_x-1] = 0; // Vector futuro de la funcion de onda FLOAT *future_u = malloc(n_x *sizeof(FLOAT)); future_u = malloc(n_x*sizeof(FLOAT)); // Condiciones de frontera future_u[0] = 0; future_u[n_x-1] = 0; // Calcula el primer valor de future_u for( i = 1; i < n_x-1; i++){ future_u[i] = present_u[i] + (r*r/2.0) * (present_u[i+1] - 2.0 * present_u[i] + present_u[i-1]); } // Imprime la condicion inicial ( present_ u ) for( i = 0; i < n_x-1; i++){ fprintf(data, "%f ", (float) present_u[i]); } fprintf(data, "%f\n", (float) present_u[i]); // Calcula el siguiente valor de present_u y future_u for( j= 0; j < n_t; j++){ updateFunc(present_u,future_u,x0,n_x,r); // Imprimir la funcion u for( i = 0; i < n_x-1; i++){ fprintf(data, "%f ", (float) present_u[i]); } fprintf(data, "%f\n", (float) present_u[i]); } return 0; }
void Object::update(float dt) { if (updateFunc) { updateFunc(dt); } }
void FunctionScript::Update(float deltaTime) { updateFunc(*gameObject, deltaTime); }