14#include "mmg/mmgs/libmmgsf.h"
16 mmg5_data_ptr_t :: mmgmesh
17 mmg5_data_ptr_t :: mmgsol,mmgmet,tmpsol
18 INTEGER :: ier,argc,i,opt
19 INTEGER(MMG5F_INT) :: j
22 INTEGER :: nsol,typsol(mmg5_nsols_max)
23 INTEGER(MMG5F_INT) :: np
24 REAL(kind=8),dimension(:),
ALLOCATABLE :: sols
26 CHARACTER(len=300) :: exec_name,filename,fileout,option
28 print*,
" -- TEST MMGSLIB"
30 argc = command_argument_count();
31 CALL get_command_argument(0, exec_name)
35 print*,
" Usage: ",trim(adjustl(exec_name)),&
36 " input_file_name output_file_name io_option"
37 print*,
" io_option = 0 to Get/Set the solution field by field"
38 print*,
" io_option = 1 to Get/Set the solution field by field &
39 & and vertex by vertex"
44 CALL get_command_argument(1, filename)
45 CALL get_command_argument(2, fileout)
46 CALL get_command_argument(3, option)
48 READ(option,
'(I2)') opt
64 CALL mmgs_init_mesh(mmg5_arg_start, &
65 mmg5_arg_ppmesh,mmgmesh,mmg5_arg_ppmet,mmgmet, &
74 CALL mmgs_loadmesh(mmgmesh,trim(adjustl(filename)),&
75 len(trim(adjustl(filename))),ier)
76 IF ( ier /= 1 )
CALL exit(102)
78 CALL mmgs_loadallsols(mmgmesh,mmgsol,trim(adjustl(filename)),&
79 len(trim(adjustl(filename))),ier)
80 IF ( ier /= 1 )
CALL exit(103)
86 CALL mmgs_get_solsatverticessize(mmgmesh,mmgsol,nsol,np,typsol,ier)
87 IF ( ier /= 1 )
CALL exit(104)
92 CALL mmgs_set_solsatverticessize(mmgmesh,tmpsol,nsol,np,typsol,ier)
93 IF ( ier /= 1 )
CALL exit(105)
103 IF ( typsol(i) == mmg5_scalar )
THEN
105 ELSE IF ( typsol(i) == mmg5_vector )
THEN
107 ELSE IF ( typsol(i) == mmg5_tensor )
THEN
111 CALL mmgs_get_ithsols_insolsatvertices(mmgsol,i,sols,ier)
112 IF ( ier /= 1 )
CALL exit(107)
115 CALL mmgs_set_ithsols_insolsatvertices(tmpsol,i,sols,ier)
116 IF ( ier /= 1 )
CALL exit(108)
118 IF ( typsol(i) == mmg5_scalar )
THEN
120 ELSE IF ( typsol(i) == mmg5_vector )
THEN
122 ELSE IF ( typsol(i) == mmg5_tensor )
THEN
128 CALL mmgs_get_ithsol_insolsatvertices(mmgsol,i,sols,j,ier)
129 IF ( ier /= 1 )
CALL exit(107)
132 CALL mmgs_set_ithsol_insolsatvertices(tmpsol,i,sols,j,ier)
133 IF ( ier /= 1 )
CALL exit(108)
146 CALL mmgs_savemesh(mmgmesh,trim(adjustl(fileout)),len(trim(adjustl(fileout))),ier)
147 IF ( ier /= 1 )
CALL exit(110)
150 CALL mmgs_saveallsols(mmgmesh,tmpsol,trim(adjustl(fileout)), &
151 len(trim(adjustl(fileout))),ier)
152 IF ( ier /= 1 )
CALL exit(111)
155 CALL mmgs_free_all(mmg5_arg_start, &
156 mmg5_arg_ppmesh,mmgmesh,mmg5_arg_ppsols,tmpsol, &
157 mmg5_arg_ppsols,mmgsol, &
int main(int argc, char *argv[])