33 u gridman_dbg,gridman_unit,gridman_check
35 INTRINSIC len_trim,get_command_argument,adjustl,trim
38 SUBROUTINE mergegrid_read(GRID1_IN,GRID2_IN,
41 CHARACTER(LEN=256) :: GRID1_IN,GRID2_IN
43 END SUBROUTINE mergegrid_read
45 SUBROUTINE mergegrid_merge(GRID1,GRID2,MTOL,GRID3)
48 REAL(GRIDMAN_DP) :: MTOL
50 END SUBROUTINE mergegrid_merge
52 SUBROUTINE mergegrid_combine(GRID1,GRID2,GRID3)
56 END SUBROUTINE mergegrid_combine
58 SUBROUTINE mergegrid_write(GRID3_OUT,GRID3)
60 CHARACTER(LEN=256) :: GRID3_OUT
62 END SUBROUTINE mergegrid_write
65 CHARACTER(LEN=256) :: GRID1_IN,GRID2_IN,GRID3_OUT
66 LOGICAL :: DBGMOD,LCHECK
67 REAL(GRIDMAN_DP) :: MTOL
70 CHARACTER(LEN=8) :: FTMP
72 CALL get_command_argument(1,ftmp)
73 IF(len_trim(ftmp).GT.0)
THEN
74 IF(adjustl(trim(ftmp)).EQ.
'help')
THEN
86 CALL mergegrid_read(grid1_in,grid2_in,grid1,grid2)
91 WRITE(gridman_unit,*)
"MERGEGRID: merging grids"
92 CALL mergegrid_merge(grid1,grid2,mtol,grid3)
96 CALL mergegrid_write(grid3_out,grid3)
98 WRITE(gridman_unit,*)
"MERGEGRID COMPLETED"
105 SUBROUTINE read_input
106 namelist /
mergegrid/ grid1_in,grid2_in,grid3_out,
120 f
CALL mergegrid_error(
"can not read namelist MERGEGRID")
126 w
WRITE(gridman_unit,*)
"MERGE_GRID: READ_INPUT finished"
128 END SUBROUTINE read_input
132 INTRINSIC index,len,trim
133 INTEGER,
PARAMETER :: FILE_LENGTH=1024
134 CHARACTER(LEN=FILE_LENGTH) :: PATH
135 CHARACTER(LEN=128) :: STR
137 CALL get_command_argument(0,path)
138 i=index(path,
'/',.true.)
139 IF(i.GT.len(path))
THEN
145 IF(gridman_dbg)
WRITE(gridman_unit,*)
" PATH:",trim(path)
147 OPEN(unit=3,file=trim(path)//
'mergegrid.parameters.description',
148 o status=
'OLD',iostat=io)
152 READ(3,
'(A)',iostat=io,end=200) str
158 100
WRITE(gridman_unit,*)
159 w
"Could not find mergegridg.parameters.description",
161 WRITE(gridman_unit,*)
162 w
"Use 'which mergegrid' to invoke via the full path"
170 SUBROUTINE mergegrid_read(GRID1_IN,GRID2_IN,GRID1,GRID2)
176 CHARACTER(LEN=256) :: GRID1_IN,GRID2_IN
183 w
WRITE(
gridman_unit,*)
"MERGEGRID: starting MERGEGRID_READ"
185 lt=len_trim(grid1_in)
187 WRITE(
gridman_unit,*)
"MERGEGRID: reading file ",grid1_in(1:lt)
188 CALL gridman_grid_read(grid1,grid1_in,ierr)
189 IF(ierr.NE.0)
CALL mergegrid_error(
'')
191 CALL mergegrid_error(
'1st grid is not defined')
193 lt=len_trim(grid2_in)
195 WRITE(
gridman_unit,*)
"MERGEGRID: reading file ",grid2_in(1:lt)
196 CALL gridman_grid_read(grid2,grid2_in,ierr)
197 IF(ierr.NE.0)
CALL mergegrid_error(
'')
199 CALL mergegrid_error(
'2nd grid is not defined')
203 w
WRITE(
gridman_unit,*)
"MERGEGRID: MERGEGRID_READ finished"
205 END SUBROUTINE mergegrid_read
211 SUBROUTINE mergegrid_merge(GRID1,GRID2,MTOL,GRID3)
213 u gridman_dbg,gridman_unit,gridman_check
218 REAL(GRIDMAN_DP) :: MTOL
226 w
WRITE(gridman_unit,*)
"MERGEGRID: starting MERGEGRID_MERGE"
231 IF(ierr.EQ.400)
WRITE(gridman_unit,*)
232 w
"You may try to increase or decrease parameter MTOL ",mtol
233 IF(ierr.NE.0)
CALL mergegrid_error(
'')
237 w
WRITE(gridman_unit,*)
"MERGEGRID: MERGEGRID_MERGE finished"
239 END SUBROUTINE mergegrid_merge
244 SUBROUTINE mergegrid_write(GRID3_OUT,GRID3)
250 CHARACTER(LEN=256) :: GRID3_OUT
257 w
WRITE(
gridman_unit,*)
"MERGEGRID: starting MERGEGRID_WRITE"
259 lt=len_trim(grid3_out)
261 WRITE(
gridman_unit,*)
"MERGEGRID: writing file ",grid3_out(1:lt)
262 CALL gridman_grid_write(grid3,grid3_out,ierr)
263 IF(ierr.NE.0)
CALL mergegrid_error(
'')
267 w
WRITE(
gridman_unit,*)
"MERGEGRID: starting MERGEGRID_FINISHED"
269 END SUBROUTINE mergegrid_write
274 SUBROUTINE mergegrid_error(STR)
277 CHARACTER(*),
INTENT(IN) :: STR
282 w
WRITE(
gridman_unit,*)
"ERROR in MERGEGRID: "//str(1:lt)
283 stop
"ERROR in MERGEGRID - see log output"
284 END SUBROUTINE mergegrid_error
program mergegrid
Marging two grids, main program.
integer, save, public gridman_unit
Index of the standard output unit.
subroutine gridman_grid2d_merge(GRID, GRID1, GRID2, TOL, IERR)
Merge two 2D grids by connecting their boundary edges.
integer, parameter, public gridman_dp
Kind parameter for real numbers.
Explicit interfaces to GRIDMAN subroutines and functions.
Data-type which describes a grid as a set of edges, methods in grid.f.
logical, save, public gridman_dbg
Switch for debugging mode.
subroutine print_description
Print manual.
Definition of data types, global constants and variables.