Value defined at particles¶
When you output value defined at particles, please use the functions in Table 82.
List 173 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 |
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. |
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