Actual source code: zdsf.c
slepc-3.21.2 2024-09-25
1: /*
2: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3: SLEPc - Scalable Library for Eigenvalue Problem Computations
4: Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain
6: This file is part of SLEPc.
7: SLEPc is distributed under a 2-clause BSD license (see LICENSE).
8: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9: */
11: #include <petsc/private/fortranimpl.h>
12: #include <slepcds.h>
14: #if defined(PETSC_HAVE_FORTRAN_CAPS)
15: #define dssettype_ DSSETTYPE
16: #define dsgettype_ DSGETTYPE
17: #define dssetoptionsprefix_ DSSETOPTIONSPREFIX
18: #define dsappendoptionsprefix_ DSAPPENDOPTIONSPREFIX
19: #define dsgetoptionsprefix_ DSGETOPTIONSPREFIX
20: #define dsdestroy_ DSDESTROY
21: #define dsview_ DSVIEW
22: #define dsviewfromoptions_ DSVIEWFROMOPTIONS
23: #define dsviewmat_ DSVIEWMAT
24: #define dsvectors_ DSVECTORS
25: #define dssort_ DSSORT
26: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
27: #define dssettype_ dssettype
28: #define dsgettype_ dsgettype
29: #define dssetoptionsprefix_ dssetoptionsprefix
30: #define dsappendoptionsprefix_ dsappendoptionsprefix
31: #define dsgetoptionsprefix_ dsgetoptionsprefix
32: #define dsdestroy_ dsdestroy
33: #define dsview_ dsview
34: #define dsviewfromoptions_ dsviewfromoptions
35: #define dsviewmat_ dsviewmat
36: #define dsvectors_ dsvectors
37: #define dssort_ dssort
38: #endif
40: SLEPC_EXTERN void dssettype_(DS *ds,char *type,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
41: {
42: char *t;
44: FIXCHAR(type,len,t);
45: *ierr = DSSetType(*ds,t);if (*ierr) return;
46: FREECHAR(type,t);
47: }
49: SLEPC_EXTERN void dsgettype_(DS *ds,char *name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
50: {
51: DSType tname;
53: *ierr = DSGetType(*ds,&tname);if (*ierr) return;
54: *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
55: FIXRETURNCHAR(PETSC_TRUE,name,len);
56: }
58: SLEPC_EXTERN void dssetoptionsprefix_(DS *ds,char *prefix,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
59: {
60: char *t;
62: FIXCHAR(prefix,len,t);
63: *ierr = DSSetOptionsPrefix(*ds,t);if (*ierr) return;
64: FREECHAR(prefix,t);
65: }
67: SLEPC_EXTERN void dsappendoptionsprefix_(DS *ds,char *prefix,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
68: {
69: char *t;
71: FIXCHAR(prefix,len,t);
72: *ierr = DSAppendOptionsPrefix(*ds,t);if (*ierr) return;
73: FREECHAR(prefix,t);
74: }
76: SLEPC_EXTERN void dsgetoptionsprefix_(DS *ds,char *prefix,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
77: {
78: const char *tname;
80: *ierr = DSGetOptionsPrefix(*ds,&tname); if (*ierr) return;
81: *ierr = PetscStrncpy(prefix,tname,len);if (*ierr) return;
82: FIXRETURNCHAR(PETSC_TRUE,prefix,len);
83: }
85: SLEPC_EXTERN void dsdestroy_(DS *ds,PetscErrorCode *ierr)
86: {
87: PETSC_FORTRAN_OBJECT_F_DESTROYED_TO_C_NULL(ds);
88: *ierr = DSDestroy(ds); if (*ierr) return;
89: PETSC_FORTRAN_OBJECT_C_NULL_TO_F_DESTROYED(ds);
90: }
92: SLEPC_EXTERN void dsview_(DS *ds,PetscViewer *viewer,PetscErrorCode *ierr)
93: {
94: PetscViewer v;
95: PetscPatchDefaultViewers_Fortran(viewer,v);
96: *ierr = DSView(*ds,v);
97: }
99: SLEPC_EXTERN void dsviewfromoptions_(DS *ds,PetscObject obj,char* type,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
100: {
101: char *t;
103: FIXCHAR(type,len,t);
104: CHKFORTRANNULLOBJECT(obj);
105: *ierr = DSViewFromOptions(*ds,obj,t);if (*ierr) return;
106: FREECHAR(type,t);
107: }
109: SLEPC_EXTERN void dsviewmat_(DS *ds,PetscViewer *viewer,DSMatType *m,PetscErrorCode *ierr)
110: {
111: PetscViewer v;
112: PetscPatchDefaultViewers_Fortran(viewer,v);
113: *ierr = DSViewMat(*ds,v,*m);
114: }
116: SLEPC_EXTERN void dsvectors_(DS *ds,DSMatType *mat,PetscInt *j,PetscReal *rnorm,PetscErrorCode *ierr)
117: {
118: CHKFORTRANNULLINTEGER(j);
119: CHKFORTRANNULLREAL(rnorm);
120: *ierr = DSVectors(*ds,*mat,j,rnorm);
121: }
123: SLEPC_EXTERN void dssort_(DS *ds,PetscScalar *eigr,PetscScalar *eigi,PetscScalar *rr,PetscScalar *ri,PetscInt *k,PetscErrorCode *ierr)
124: {
125: CHKFORTRANNULLSCALAR(eigr);
126: CHKFORTRANNULLSCALAR(eigi);
127: CHKFORTRANNULLSCALAR(rr);
128: CHKFORTRANNULLSCALAR(ri);
129: CHKFORTRANNULLINTEGER(k);
130: *ierr = DSSort(*ds,eigr,eigi,rr,ri,k);
131: }