Value defined at particles¶
When you output value defined at particles, please use the functions in Table 74.
List 106 shows an example of the process to output value defined at grid nodes.
Note
These functions are deprecated
When you want to output value defined at particles, we recommend that you use functions described at Value defined at particles (groups supported). Using those new functions, you can output particles with multiple groups, and you can visualize particles with different settings for color and size for each group.
Subroutine | Remarks |
---|---|
cg_iric_write_sol_particle_pos2d_f | Outputs particle positions (two-dimensions) |
cg_iric_write_sol_particle_pos3d_f | Outputs particle positions (three-dimensions) |
cg_iric_write_sol_particle_integer_f | Outputs integer-type calculation results, giving a value for each particle. |
cg_iric_write_sol_particle_real_f | Outputs double-precision real-type calculation results, giving a value for each particle. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | program SampleProgram implicit none include 'cgnslib_f.h' integer:: fin, ier, isize, jsize integer:: canceled integer:: locked double precision:: time double precision, dimension(:,:), allocatable::grid_x, grid_y integer:: numparticles = 10 double precision, dimension(:), allocatable:: particle_x, particle_y double precision, dimension(:), allocatable:: velocity_x, velocity_y, temperature character(len=20):: condFile condFile = 'test.cgn' ! Open CGNS file call cg_open_f(condFile, CG_MODE_MODIFY, fin, ier) if (ier /=0) STOP "*** Open error of CGNS file ***" ! Initialize iRIClib call cg_iric_init_f(fin, ier) if (ier /=0) STOP "*** Initialize error of CGNS file ***" ! Check the grid size call cg_iric_gotogridcoord2d_f(isize, jsize, ier) ! Allocate memory for loading the grid allocate(grid_x(isize, jsize), grid_y(isize, jsize)) ! Allocate memory for calculation result allocate(particle_x(numparticles), particle_y(numparticles)) allocate(velocity_x(numparticles), velocity_y(numparticles), temperature(numparticles)) ! Read the grid into memory call cg_iric_getgridcoord2d_f (grid_x, grid_y, ier) ! Output the initial state information. time = 0 call cg_iric_write_sol_time_f(time, ier) call cg_iric_write_sol_particle_pos2d_f(numparticles, particle_x, particle_y, ier) call cg_iric_write_sol_particle_real_f('VelocityX', velocity_x, ier) call cg_iric_write_sol_particle_real_f('VelocityY', velocity_y, ier) call cg_iric_write_sol_particle_real_f('Temperature', temperature, ier) do time = time + 10.0 ! (Perform calculation here) call iric_check_cancel_f(canceled) if (canceled == 1) exit ! Output calculation results call iric_write_sol_start_f(condFile, ier) call cg_iric_write_sol_time_f(time, ier) call cg_iric_write_sol_particle_pos2d_f(numparticles, particle_x, particle_y, ier) call cg_iric_write_sol_particle_real_f('VelocityX', velocity_x, ier) call cg_iric_write_sol_particle_real_f('VelocityY', velocity_y, ier) call cg_iric_write_sol_particle_real_f('Temperature', temperature, ier) call cg_iric_flush_f(condFile, fin, ier) call iric_write_sol_end_f(condFile, ier) if (time > 1000) exit end do ! Close CGNS file call cg_close_f(fin, ier) stop end program SampleProgram |