Value defined at particles (groups supported)¶
When you output value defined at particles, please use the functions in Table 75.
Using the functions explained here, you can output multiple groups of particles. To output data please call cg_iric_write_sol_particlegroup_groupbegin_f and cg_iric_write_sol_particlegroup_groupend_f, before and after outputting data.
List 107 shows an example of the process to output value defined at particles.
Note
In functions explained here, data for one particle is output with each function call.
Subroutine | Remarks |
---|---|
cg_iric_write_sol_particlegroup_groupbegin_f | Start outputting calculation result defined at particles. |
cg_iric_write_sol_particlegroup_groupend_f | Finish outputting calculation result defined at particles. |
cg_iric_write_sol_particlegroup_pos2d_f | Outputs particle positions (two-dimensions) |
cg_iric_write_sol_particlegroup_pos3d_f | Outputs particle positions (three-dimensions) |
cg_iric_write_sol_particlegroup_integer_f | Outputs integer-type calculation results, giving a value for each particle. |
cg_iric_write_sol_particlegroup_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 68 69 70 71 72 73 74 75 76 77 78 79 | 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 integer:: i integer:: status = 1 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_particlegroup_groupbegin_f('driftwood', ier) do i = 1, numparticles ! (Input values to particle_x, particle_x, velocity_x, velocity_y, temperature here) call cg_iric_write_sol_particlegroup_pos2d_f(particle_x(i), particle_y(i), ier) call cg_iric_write_sol_particlegroup_real_f('VelocityX', velocity_x(i), ier) call cg_iric_write_sol_particlegroup_real_f('VelocityY', velocity_y(i), ier) call cg_iric_write_sol_particlegroup_real_f('Temperature', temperature(i), ier) end do call cg_iric_write_sol_particlegroup_groupend_f(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_particlegroup_groupbegin_f('driftwood', ier) do i = 1, numparticles ! (Input values to particle_x, particle_x, velocity_x, velocity_y, temperature here) call cg_iric_write_sol_particlegroup_pos2d_f(particle_x(i), particle_y(i), ier) call cg_iric_write_sol_particlegroup_real_f('VelocityX', velocity_x(i), ier) call cg_iric_write_sol_particlegroup_real_f('VelocityY', velocity_y(i), ier) call cg_iric_write_sol_particlegroup_real_f('Temperature', temperature(i), ier) end do call cg_iric_write_sol_particlegroup_groupend_f(ier) if (time > 1000) exit end do ! Close CGNS file call cg_close_f(fin, ier) stop end program SampleProgram |