# UDF for CG_motion

 Register Blogs Members List Search Today's Posts Mark Forums Read

 March 10, 2014, 11:04 UDF for CG_motion #1 New Member   Linh Tuan The Nguyen Join Date: Nov 2012 Posts: 9 Rep Power: 13 Hi, I am Linh. I quite new with using UDF. I was writing this UDF using CD_MOTION Macro. My objective is solve the amplitude of motion for single degree of freedom using Finite different method. But I have two errors: - syntax error : missing ';' before 'type' - subscript is not of integral type. Here is my UDF code. #include "udf.h" #include "stdio.h" #include "stdlib.h" #include "math.h" #include "dynamesh_tools.h" #include "storage.h" static real v_prev = 0.0; FILE *fout; DEFINE_CG_MOTION(cylinder, dt, vel, omega, time, dtime) { Thread *t; Domain *d = Get_Domain(1); face_t f; real NV_VEC (A); real force; real mass = 1.443; real wn = 0.183; real k = mass*wn*wn; real c = 2*mass*wn*0.0072; /* reset velocities */ NV_S (vel, =, 0.0); NV_S (omega, =, 0.0); if (!Data_Valid_P ()) return; /* get the thread pointer for which this motion is defined */ t = DT_THREAD(dt); /* compute pressure force on body by looping through all faces */ force = 0.0; begin_f_loop (f, t) { F_AREA (A, f, t); force += F_P (f, t) * NV_MAG (A); } end_f_loop (f, t) /* compute pressure amplitude of motion by Finite Different Method*/ NMAX = int(time/dtime) + 1; real X[NMAX]; for(int i = 0; i < NMAX; i++){ X[0] = 0; X[1] = 0; X[i+1] = (force - X[i-1]*(mass/(dtime*dtime) - c/(2*dtime)) - X[i]*(-2*mass/(dtime*dtime) + k))/(mass/(dtime*dtime) + c/(2*dtime)); X[i+1]=DT_CG(dt)[1]; /*Assign to updated */ Message ("time = %f, force = %f, displacement = %f\n", time, force, X[i+1]); fout = fopen("results.txt", "a"); fprintf(fout, "%f %f %f\n", time, force, X[i+1]); fclose(fout); } } Thanks for your help Linh

 Tags sdof, udf cg motion