Skip to content

Commit c3b01ac

Browse files
Merge pull request #362 from easifem-fortran/vickysharma0812
Minor fixes in AbstractLinSolver
2 parents e4913b2 + 6449fda commit c3b01ac

File tree

3 files changed

+3
-380
lines changed

3 files changed

+3
-380
lines changed

src/submodules/AbstractLinSolver/src/[email protected]

Lines changed: 0 additions & 378 deletions
Original file line numberDiff line numberDiff line change
@@ -21,384 +21,6 @@
2121
IMPLICIT NONE
2222
CONTAINS
2323

24-
!----------------------------------------------------------------------------
25-
! SetAbstractLinSolverParam
26-
!----------------------------------------------------------------------------
27-
28-
MODULE PROCEDURE SetAbstractLinSolverParam
29-
CHARACTER(*), PARAMETER :: myName = "SetLinSolverParam()"
30-
INTEGER(I4B) :: p_name0
31-
32-
#ifdef DEBUG_VER
33-
CALL e%RaiseInformation(modName//'::'//myName//' - '// &
34-
& '[START]')
35-
#endif
36-
37-
IF (.NOT. PRESENT(solverName)) THEN
38-
CALL e%raiseError(modName//'::'//myName//' - '// &
39-
& '[CONFIG ERROR] :: solverName should be present')
40-
END IF
41-
42-
IF (solverName .EQ. LIS_SOR) THEN
43-
IF (.NOT. PRESENT(sor_omega)) THEN
44-
CALL e%raiseError(modName//'::'//myName//' - '// &
45-
& '[CONFIG ERROR] :: For solverName LIS_SOR sor_omega should be present')
46-
END IF
47-
END IF
48-
49-
IF (solverName .EQ. LIS_BICGSTABL) THEN
50-
IF (.NOT. PRESENT(bicgstab_ell)) THEN
51-
CALL e%raiseError(modName//'::'//myName//' - '// &
52-
& '[CONFIG ERROR] :: For solverName LIS_BICGSTABL bicgstab_ell '// &
53-
& 'should be present')
54-
END IF
55-
END IF
56-
57-
IF (.NOT. PRESENT(preconditionOption)) THEN
58-
CALL e%raiseError(modName//'::'//myName//' - '// &
59-
& '[CONFIG ERROR] :: preconditionOption should be present')
60-
END IF
61-
62-
p_name0 = INPUT(option=p_name, default=PRECOND_NONE)
63-
64-
IF (preconditionOption .NE. PRECOND_NONE) THEN
65-
IF (.NOT. PRESENT(p_name)) THEN
66-
CALL e%raiseError(modName//'::'//myName//' - '// &
67-
& '[CONFIG ERROR] :: preconditionOption is active, therefore, '// &
68-
& 'precondition name (p_name) should be present')
69-
END IF
70-
END IF
71-
72-
SELECT CASE (p_name0)
73-
CASE (PRECOND_NONE)
74-
!! Do nothing
75-
CASE (PRECOND_ILUT)
76-
IF (.NOT. PRESENT(p_ilu_droptol) .OR. &
77-
& .NOT. PRESENT(p_ilu_lfil)) THEN
78-
CALL e%raiseError(modName//'::'//myName//' - '// &
79-
& '[CONFIG ERROR] :: for PRECOND_ILUT (sparsekit) '// &
80-
& 'p_ilu_droptol and p_ilu_lfil should be present!')
81-
END IF
82-
CASE (PRECOND_ILUTP)
83-
IF (.NOT. PRESENT(p_ilu_droptol) .OR. &
84-
& .NOT. PRESENT(p_ilu_lfil) .OR. &
85-
& .NOT. PRESENT(p_ilu_permtol) .OR. &
86-
& .NOT. PRESENT(p_ilu_mbloc)) THEN
87-
CALL e%raiseError(modName//'::'//myName//' - '// &
88-
& '[CONFIG ERROR] :: for PRECOND_ILUTP (sparsekit) '// &
89-
& 'p_ilu_droptol, p_ilu_lfil, p_ilu_permtol, '// &
90-
& 'p_ilu_mbloc should be present!')
91-
END IF
92-
CASE (PRECOND_ILUD)
93-
IF (.NOT. PRESENT(p_ilu_droptol) .OR. &
94-
& .NOT. PRESENT(p_ilu_alpha)) THEN
95-
CALL e%raiseError(modName//'::'//myName//' - '// &
96-
& '[CONFIG ERROR] :: for PRECOND_ILUTP (sparsekit) '// &
97-
& 'p_ilu_droptol and p_ilu_alpha should be present!')
98-
END IF
99-
CASE (PRECOND_ILUDP)
100-
IF (.NOT. PRESENT(p_ilu_droptol) .OR. &
101-
& .NOT. PRESENT(p_ilu_alpha) .OR. &
102-
& .NOT. PRESENT(p_ilu_permtol) .OR. &
103-
& .NOT. PRESENT(p_ilu_mbloc)) THEN
104-
CALL e%raiseError(modName//'::'//myName//' - '// &
105-
& '[CONFIG ERROR] :: for PRECOND_ILUDP (sparsekit) p_ilu_droptol, '// &
106-
& 'p_ilu_alpha, p_ilu_permtol, '// &
107-
& 'p_ilu_mbloc should be present!!!')
108-
END IF
109-
CASE (PRECOND_ILUK)
110-
IF (.NOT. PRESENT(p_ilu_lfil)) THEN
111-
CALL e%raiseError(modName//'::'//myName//' - '// &
112-
& '[CONFIG ERROR] :: for PRECOND_ILUK (sparsekit) p_ilu_lfil '// &
113-
& 'should be present!')
114-
END IF
115-
116-
! LIS LIB
117-
CASE (PRECOND_ILU)
118-
IF (.NOT. PRESENT(p_ilu_fill)) THEN
119-
CALL e%raiseError(modName//'::'//myName//' - '// &
120-
& '[CONFIG ERROR] :: for PRECOND_ILU (LIS) p_ilu_fill should be present!')
121-
END IF
122-
CASE (PRECOND_SSOR)
123-
IF (.NOT. PRESENT(p_ssor_omega)) THEN
124-
CALL e%raiseError(modName//'::'//myName//' - '// &
125-
& '[CONFIG ERROR] :: for PRECOND_SSOR (LIS) p_ssor_omega '// &
126-
& 'should be present!')
127-
END IF
128-
CASE (PRECOND_HYBRID)
129-
130-
IF (.NOT. PRESENT(p_hybrid_i) .OR. &
131-
& .NOT. PRESENT(p_hybrid_tol) .OR. &
132-
& .NOT. PRESENT(p_hybrid_maxiter) &
133-
& ) THEN
134-
CALL e%raiseError(modName//'::'//myName//' - '// &
135-
& '[CONFIG ERROR] :: for PRECOND_HYBRID (LIS) p_hybrid_i '// &
136-
& 'p_hybrid_maxiter p_hybrid_tol '// &
137-
& ' should be present!!!')
138-
END IF
139-
140-
IF (p_hybrid_i .EQ. LIS_SOR) THEN
141-
IF (.NOT. PRESENT(p_hybrid_omega)) THEN
142-
CALL e%raiseError(modName//'::'//myName//' - '// &
143-
& '[CONFIG ERROR] :: for PRECOND_HYBRID (LIS) and '// &
144-
& 'p_hybrid_i=LIS_SOR, p_hybrid_omega '// &
145-
& ' should be present!!!')
146-
END IF
147-
END IF
148-
149-
IF (p_hybrid_i .EQ. LIS_BICGSTABL) THEN
150-
IF (.NOT. PRESENT(p_hybrid_ell)) THEN
151-
CALL e%raiseError(modName//'::'//myName//' - '// &
152-
& '[CONFIG ERROR] :: for PRECOND_HYBRID (LIS) and '// &
153-
& 'p_hybrid_i=LIS_BICGSTABL, '// &
154-
& ' p_hybrid_ell should be present!!!')
155-
END IF
156-
END IF
157-
158-
IF (ANY(p_hybrid_i .EQ. [LIS_GMRES, LIS_ORTHOMIN, LIS_FGMRES])) THEN
159-
IF (.NOT. PRESENT(p_hybrid_restart)) THEN
160-
CALL e%raiseError(modName//'::'//myName//' - '// &
161-
& '[CONFIG ERROR] :: for PRECOND_HYBRID (LIS), '// &
162-
& 'and p_hybrid_i=LIS_GMRES LIS_ORTHOMIN LIS_FGMRES, '// &
163-
& 'p_hybrid_restart should be present!!!')
164-
END IF
165-
END IF
166-
167-
CASE (PRECOND_IS)
168-
IF (.NOT. PRESENT(p_is_alpha) .OR. &
169-
& .NOT. PRESENT(p_is_m)) THEN
170-
CALL e%raiseError(modName//'::'//myName//' - '// &
171-
& '[CONFIG ERROR] :: for PRECOND_IS (LIS) p_is_alpha, '// &
172-
& 'p_is_m should be present!')
173-
END IF
174-
175-
CASE (PRECOND_SAINV)
176-
IF (.NOT. PRESENT(p_sainv_drop)) THEN
177-
CALL e%raiseError(modName//'::'//myName//' - '// &
178-
& '[CONFIG ERROR] :: for PRECOND_SAINV (LIS) '// &
179-
& 'p_sainv_drop should be present!')
180-
END IF
181-
182-
CASE (PRECOND_SAAMG)
183-
184-
IF ( &
185-
& .NOT. PRESENT(p_saamg_theta) .OR. &
186-
& .NOT. PRESENT(p_saamg_unsym)) THEN
187-
CALL e%raiseError(modName//'::'//myName//' - '// &
188-
& '[CONFIG ERROR] :: for PRECOND_SAAMG (LIS) '// &
189-
& 'p_saamg_theta, p_saamg_unsym '// &
190-
& 'should be present!!!')
191-
END IF
192-
193-
CASE (PRECOND_ILUC)
194-
195-
IF ( &
196-
& .NOT. PRESENT(p_iluc_drop) .OR. &
197-
& .NOT. PRESENT(p_iluc_rate)) THEN
198-
CALL e%raiseError(modName//'::'//myName//' - '// &
199-
& '[CONFIG ERROR] :: for PRECOND_ILUC (LIS) p_iluc_drop, p_iluc_rate'// &
200-
& 'should be present!!!')
201-
END IF
202-
203-
CASE (PRECOND_ADDS)
204-
205-
IF ( &
206-
& .NOT. PRESENT(p_adds) .OR. &
207-
& .NOT. PRESENT(p_adds_iter)) THEN
208-
CALL e%raiseError(modName//'::'//myName//' - '// &
209-
& '[CONFIG ERROR] :: for PRECOND_ADDS (LIS) p_adds, p_adds_iter'// &
210-
& 'should be present!!!')
211-
END IF
212-
213-
CASE DEFAULT
214-
CALL e%raiseError(modName//'::'//myName//' - '// &
215-
& '[CONFIG ERROR] :: No case found for given precondition name, '// &
216-
& tostring(p_name0))
217-
END SELECT
218-
219-
! engine
220-
CALL Set(obj=param, prefix=prefix, key="engine", datatype="char", &
221-
& VALUE=engine)
222-
223-
! solverName
224-
CALL Set(obj=param, prefix=prefix, key="solverName", datatype=1_I4B, &
225-
& VALUE=solverName)
226-
227-
! preconditionOption
228-
CALL Set(obj=param, prefix=prefix, key="preconditionOption", datatype=1_I4B, &
229-
& VALUE=preconditionOption)
230-
231-
! maxIter
232-
CALL Set(obj=param, prefix=prefix, key="maxIter", datatype=1_I4B, &
233-
& VALUE=maxIter)
234-
235-
! rtol
236-
CALL Set(obj=param, prefix=prefix, key="rtol", datatype=1.0_DFP, &
237-
& VALUE=rtol)
238-
239-
! atol
240-
CALL Set(obj=param, prefix=prefix, key="atol", datatype=1.0_DFP, &
241-
& VALUE=atol)
242-
243-
! convergenceIn
244-
CALL Set(obj=param, prefix=prefix, key="convergenceIn", datatype=1_I4B, &
245-
& VALUE=INPUT(option=convergenceIn, default=default_convergenceIn))
246-
247-
! convergenceType
248-
CALL Set(obj=param, prefix=prefix, key="convergenceType", datatype=1_I4B, &
249-
& VALUE=INPUT(option=convergenceType, default=default_convergenceType))
250-
251-
! relativeToRHS
252-
CALL Set(obj=param, prefix=prefix, key="relativeToRHS", datatype=.TRUE., &
253-
& VALUE=INPUT(option=relativeToRHS, default=default_relativeToRHS))
254-
255-
! KrylovSubspaceSize
256-
CALL Set(obj=param, prefix=prefix, key="KrylovSubspaceSize", &
257-
& datatype=1_I4B, &
258-
& VALUE=INPUT(option=KrylovSubspaceSize, default=default_KrylovSubspaceSize))
259-
260-
! scale
261-
CALL Set(obj=param, prefix=prefix, key="scale", &
262-
& datatype=1_I4B, &
263-
& VALUE=INPUT(option=scale, default=default_scale))
264-
265-
! initx_zeros
266-
CALL Set(obj=param, prefix=prefix, key="initx_zeros", &
267-
& datatype=.TRUE., &
268-
& VALUE=INPUT(option=initx_zeros, default=default_initx_zeros))
269-
270-
! bicgstab_ell
271-
CALL Set(obj=param, prefix=prefix, key="bicgstab_ell", &
272-
& datatype=1_I4B, &
273-
& VALUE=INPUT(option=bicgstab_ell, default=default_bicgstab_ell))
274-
275-
! sor_omega
276-
CALL Set(obj=param, prefix=prefix, key="sor_omega", &
277-
& datatype=1.0_DFP, &
278-
& VALUE=INPUT(option=sor_omega, default=default_sor_omega))
279-
280-
! p_name
281-
CALL Set(obj=param, prefix=prefix, key="/Precond/name", &
282-
& datatype=1_I4B, &
283-
& VALUE=p_name0)
284-
285-
! p_ilu_lfil
286-
CALL Set(obj=param, prefix=prefix, key="/Precond/ilu_lfil", &
287-
& datatype=1_I4B, &
288-
& VALUE=INPUT(option=p_ilu_lfil, default=default_ilu_lfil))
289-
290-
! p_ilu_mbloc
291-
CALL Set(obj=param, prefix=prefix, key="/Precond/ilu_mbloc", &
292-
& datatype=1_I4B, &
293-
& VALUE=INPUT(option=p_ilu_mbloc, default=default_ilu_mbloc))
294-
295-
! p_ilu_droptol
296-
CALL Set(obj=param, prefix=prefix, key="/Precond/ilu_droptol", &
297-
& datatype=1.0_DFP, &
298-
& VALUE=INPUT(option=p_ilu_droptol, default=default_ilu_droptol))
299-
300-
! p_ilu_permtol
301-
CALL Set(obj=param, prefix=prefix, key="/Precond/ilu_permtol", &
302-
& datatype=1.0_DFP, &
303-
& VALUE=INPUT(option=p_ilu_permtol, default=default_ilu_permtol))
304-
305-
! p_ilu_alpha
306-
CALL Set(obj=param, prefix=prefix, key="/Precond/ilu_alpha", &
307-
& datatype=1.0_DFP, &
308-
& VALUE=INPUT(option=p_ilu_alpha, default=default_ilu_alpha))
309-
310-
! p_ilu_fill
311-
CALL Set(obj=param, prefix=prefix, key="/Precond/ilu_fill", &
312-
& datatype=1_I4B, &
313-
& VALUE=INPUT(option=p_ilu_fill, default=default_ilu_fill))
314-
315-
! p_ssor_omega
316-
CALL Set(obj=param, prefix=prefix, key="/Precond/ssor_omega", &
317-
& datatype=1.0_DFP, &
318-
& VALUE=INPUT(option=p_ssor_omega, default=default_ssor_omega))
319-
320-
! p_hybrid_i
321-
CALL Set(obj=param, prefix=prefix, key="/Precond/hybrid_i", &
322-
& datatype=1_I4B, &
323-
& VALUE=INPUT(option=p_hybrid_i, default=default_hybrid_i))
324-
325-
! p_hybrid_maxiter
326-
CALL Set(obj=param, prefix=prefix, key="/Precond/hybrid_maxiter", &
327-
& datatype=1_I4B, &
328-
& VALUE=INPUT(option=p_hybrid_maxiter, default=default_hybrid_maxiter))
329-
330-
! p_hybrid_tol
331-
CALL Set(obj=param, prefix=prefix, key="/Precond/hybrid_tol", &
332-
& datatype=1.0_DFP, &
333-
& VALUE=INPUT(option=p_hybrid_tol, default=default_hybrid_tol))
334-
335-
! p_hybrid_omega
336-
CALL Set(obj=param, prefix=prefix, key="/Precond/hybrid_omega", &
337-
& datatype=1.0_DFP, &
338-
& VALUE=INPUT(option=p_hybrid_omega, default=default_hybrid_omega))
339-
340-
! p_hybrid_ell
341-
CALL Set(obj=param, prefix=prefix, key="/Precond/hybrid_ell", &
342-
& datatype=1_I4B, &
343-
& VALUE=INPUT(option=p_hybrid_ell, default=default_hybrid_ell))
344-
345-
! p_hybrid_restart
346-
CALL Set(obj=param, prefix=prefix, key="/Precond/hybrid_restart", &
347-
& datatype=1_I4B, &
348-
& VALUE=INPUT(option=p_hybrid_restart, default=default_hybrid_restart))
349-
350-
! p_is_alpha
351-
CALL Set(obj=param, prefix=prefix, key="/Precond/is_alpha", &
352-
& datatype=1.0_DFP, &
353-
& VALUE=INPUT(option=p_is_alpha, default=default_is_alpha))
354-
355-
!
356-
! p_is_m
357-
CALL Set(obj=param, prefix=prefix, key="/Precond/is_m", &
358-
& datatype=1_I4B, &
359-
& VALUE=INPUT(option=p_is_m, default=default_is_m))
360-
361-
! p_sainv_drop
362-
CALL Set(obj=param, prefix=prefix, key="/Precond/sainv_drop", &
363-
& datatype=1.0_DFP, &
364-
& VALUE=INPUT(option=p_sainv_drop, default=default_sainv_drop))
365-
366-
! p_saamg_unsym
367-
CALL Set(obj=param, prefix=prefix, key="/Precond/saamg_unsym", &
368-
& datatype=.TRUE., &
369-
& VALUE=INPUT(option=p_saamg_unsym, default=default_saamg_unsym))
370-
371-
! p_saamg_theta
372-
CALL Set(obj=param, prefix=prefix, key="/Precond/saamg_theta", &
373-
& datatype=1.0_DFP, &
374-
& VALUE=INPUT(option=p_saamg_theta, default=default_saamg_theta))
375-
376-
! p_iluc_drop
377-
CALL Set(obj=param, prefix=prefix, key="/Precond/iluc_drop", &
378-
& datatype=1.0_DFP, &
379-
& VALUE=INPUT(option=p_iluc_drop, default=default_iluc_drop))
380-
381-
! p_iluc_rate
382-
CALL Set(obj=param, prefix=prefix, key="/Precond/iluc_rate", &
383-
& datatype=1.0_DFP, &
384-
& VALUE=INPUT(option=p_iluc_rate, default=default_iluc_rate))
385-
386-
! p_adds
387-
CALL Set(obj=param, prefix=prefix, key="/Precond/adds", &
388-
& datatype=.TRUE., &
389-
& VALUE=INPUT(option=p_adds, default=default_adds))
390-
391-
! p_adds_iter
392-
CALL Set(obj=param, prefix=prefix, key="/Precond/adds_iter", &
393-
& datatype=1_I4B, &
394-
& VALUE=INPUT(option=p_adds_iter, default=default_adds_iter))
395-
396-
#ifdef DEBUG_VER
397-
CALL e%RaiseInformation(modName//'::'//myName//' - '// &
398-
& '[END]')
399-
#endif
400-
END PROCEDURE SetAbstractLinSolverParam
401-
40224
!----------------------------------------------------------------------------
40325
! Deallocate
40426
!----------------------------------------------------------------------------

src/submodules/AbstractLinSolver/src/[email protected]

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
SUBMODULE(AbstractLinSolver_Class) SetMethods
1919
USE BaseMethod
20+
USE FPL_Method
2021
IMPLICIT NONE
2122
CONTAINS
2223

0 commit comments

Comments
 (0)