Value defined at particles

When you output value defined at particles, please use the functions in Table 76.

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.

Table 76 Subroutines to use for outputting result defined at particles

Subroutine

Remarks

cg_iric_write_sol_particle_pos2d

Outputs particle positions (two-dimensions)

cg_iric_write_sol_particle_pos3d

Outputs particle positions (three-dimensions)

cg_iric_write_sol_particle_integer

Outputs integer-type calculation results, giving a value for each particle.

cg_iric_write_sol_particle_real

Outputs double-precision real-type calculation results, giving a value for each particle.

List 106 Example source code (Value defined at particles)
 1program SampleProgram
 2  use iric
 3  implicit none
 4
 5  integer:: fin, ier, isize, jsize
 6  integer:: canceled
 7  integer:: locked
 8  double precision:: time
 9  double precision, dimension(:,:), allocatable::grid_x, grid_y
10  integer:: numparticles = 10
11  double precision, dimension(:), allocatable:: particle_x, particle_y
12  double precision, dimension(:), allocatable:: velocity_x, velocity_y, temperature
13  character(len=20):: condFile
14
15  condFile = 'test.cgn'
16
17  ! Open CGNS file
18  call cg_iric_open(condFile, IRIC_MODE_MODIFY, fin, ier)
19  if (ier /=0) STOP "*** Open error of CGNS file ***"
20
21  ! Check the grid size
22  call cg_iric_read_grid2d_str_size(fin, isize, jsize, ier)
23  ! Allocate memory for loading the grid
24  allocate(grid_x(isize, jsize), grid_y(isize, jsize))
25  ! Allocate memory for calculation result
26  allocate(particle_x(numparticles), particle_y(numparticles))
27  allocate(velocity_x(numparticles), velocity_y(numparticles), temperature(numparticles))
28
29  ! Read the grid into memory
30  call cg_iric_read_grid2d_coords(fin, grid_x, grid_y, ier)
31
32  ! Output the initial state information.
33  time = 0
34  call cg_iric_write_sol_start(fin, ier)
35  call cg_iric_write_sol_time(fin, time, ier)
36  call cg_iric_write_sol_particle_pos2d(fin, numparticles, particle_x, particle_y, ier)
37  call cg_iric_write_sol_particle_real(fin, 'VelocityX', velocity_x, ier)
38  call cg_iric_write_sol_particle_real(fin, 'VelocityY', velocity_y, ier)
39  call cg_iric_write_sol_particle_real(fin, 'Temperature', temperature, ier)
40  call cg_iric_write_sol_end(fin, ier)
41  do
42    time = time + 10.0
43
44    ! (Perform calculation here)
45
46    call iric_check_cancel(canceled)
47    if (canceled == 1) exit
48
49    ! Output calculation results
50    call cg_iric_write_sol_start(fin, ier)
51    call cg_iric_write_sol_time(fin, time, ier)
52    call cg_iric_write_sol_particle_pos2d(fin, numparticles, particle_x, particle_y, ier)
53    call cg_iric_write_sol_particle_real(fin, 'VelocityX', velocity_x, ier)
54    call cg_iric_write_sol_particle_real(fin, 'VelocityY', velocity_y, ier)
55    call cg_iric_write_sol_particle_real(fin, 'Temperature', temperature, ier)
56    call cg_iric_write_sol_end(fin, ier)
57
58    if (time > 1000) exit
59  end do
60
61  ! Close CGNS file
62  call cg_iric_close(fin, ier)
63  stop
64end program SampleProgram