xref: /petsc/src/dm/interface/ftn-custom/zdmf.c (revision c58f1c226d931c4a5e770c4500cd78d45092fdba)
1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h>
2c6db04a5SJed Brown #include <petscdm.h>
3665c2dedSJed Brown #include <petscviewer.h>
49a42bb27SBarry Smith 
59a42bb27SBarry Smith #if defined(PETSC_HAVE_FORTRAN_CAPS)
624e7ded0SBarry Smith #define dmview_                      DMVIEW
75b400853SJed Brown #define dmsetoptionsprefix_          DMSETOPTIONSPREFIX
8b412c318SBarry Smith #define dmsetmattype_                DMSETMATTYPE
9b412c318SBarry Smith #define dmsetvectype_                DMSETVECTYPE
10c0dedaeaSBarry Smith #define dmgetmattype_                DMGETMATTYPE
11c0dedaeaSBarry Smith #define dmgetvectype_                DMGETVECTYPE
12*c58f1c22SToby Isaac #define dmlabelview_                 DMLABELVIEW
13*c58f1c22SToby Isaac #define dmcreatelabel_               DMCREATELABEL
14*c58f1c22SToby Isaac #define dmhaslabel_                  DMHASLABEL
15*c58f1c22SToby Isaac #define dmgetlabelvalue_             DMGETLABELVALUE
16*c58f1c22SToby Isaac #define dmsetlabelvalue_             DMSETLABELVALUE
17*c58f1c22SToby Isaac #define dmgetlabelsize_              DMGETLABELSIZE
18*c58f1c22SToby Isaac #define dmgetlabelidis_              DMGETLABELIDIS
19*c58f1c22SToby Isaac #define dmgetlabel_                  DMGETLABEL
20*c58f1c22SToby Isaac #define dmgetstratumsize_            DMGETSTRATUMSIZE
21*c58f1c22SToby Isaac #define dmgetstratumis_              DMGETSTRATUMIS
229a42bb27SBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
2324e7ded0SBarry Smith #define dmview_                      dmview
245b400853SJed Brown #define dmsetoptionsprefix_          dmsetoptionsprefix
25b412c318SBarry Smith #define dmsetmattype_                dmsetmattype
26b412c318SBarry Smith #define dmsetvectype_                dmsetvectype
27c0dedaeaSBarry Smith #define dmgetmattype_                dmgetmattype
28c0dedaeaSBarry Smith #define dmgetvectype_                dmgetvectype
29*c58f1c22SToby Isaac #define dmlabelview_                 dmlabelview
30*c58f1c22SToby Isaac #define dmcreatelabel_               dmcreatelabel
31*c58f1c22SToby Isaac #define dmhaslabel_                  dmhaslabel
32*c58f1c22SToby Isaac #define dmgetlabelvalue_             dmgetlabelvalue
33*c58f1c22SToby Isaac #define dmsetlabelvalue_             dmsetlabelvalue
34*c58f1c22SToby Isaac #define dmgetlabelsize_              dmlabelsize
35*c58f1c22SToby Isaac #define dmgetlabelidis_              dmlabelidis
36*c58f1c22SToby Isaac #define dmgetlabel_                  dmgetlabel
37*c58f1c22SToby Isaac #define dmgetstratumsize_            dmgetstratumsize
38*c58f1c22SToby Isaac #define dmgetstratumis_              dmgetstratumis
399a42bb27SBarry Smith #endif
409a42bb27SBarry Smith 
41c0dedaeaSBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetmattype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
42c0dedaeaSBarry Smith {
43c0dedaeaSBarry Smith   const char *tname;
44c0dedaeaSBarry Smith 
45c0dedaeaSBarry Smith   *ierr = DMGetMatType(*mm,&tname);if (*ierr) return;
46c0dedaeaSBarry Smith   if (name != PETSC_NULL_CHARACTER_Fortran) {
47c0dedaeaSBarry Smith     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
48c0dedaeaSBarry Smith   }
49c0dedaeaSBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len);
50c0dedaeaSBarry Smith }
51c0dedaeaSBarry Smith 
52c0dedaeaSBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetvectype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
53c0dedaeaSBarry Smith {
54c0dedaeaSBarry Smith   const char *tname;
55c0dedaeaSBarry Smith 
56c0dedaeaSBarry Smith   *ierr = DMGetVecType(*mm,&tname);if (*ierr) return;
57c0dedaeaSBarry Smith   if (name != PETSC_NULL_CHARACTER_Fortran) {
58c0dedaeaSBarry Smith     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
59c0dedaeaSBarry Smith   }
60c0dedaeaSBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len);
61c0dedaeaSBarry Smith }
62c0dedaeaSBarry Smith 
638cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmview_(DM *da,PetscViewer *vin,PetscErrorCode *ierr)
649a42bb27SBarry Smith {
659a42bb27SBarry Smith   PetscViewer v;
669a42bb27SBarry Smith   PetscPatchDefaultViewers_Fortran(vin,v);
679a42bb27SBarry Smith   *ierr = DMView(*da,v);
689a42bb27SBarry Smith }
69950540a4SJed Brown 
708cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmsetoptionsprefix_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
715b400853SJed Brown {
725b400853SJed Brown   char *t;
735b400853SJed Brown 
745b400853SJed Brown   FIXCHAR(prefix,len,t);
755b400853SJed Brown   *ierr = DMSetOptionsPrefix(*dm,t);
765b400853SJed Brown   FREECHAR(prefix,t);
775b400853SJed Brown }
78b412c318SBarry Smith 
79b412c318SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetmattype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
80b412c318SBarry Smith {
81b412c318SBarry Smith   char *t;
82b412c318SBarry Smith 
83b412c318SBarry Smith   FIXCHAR(prefix,len,t);
84b412c318SBarry Smith   *ierr = DMSetMatType(*dm,t);
85b412c318SBarry Smith   FREECHAR(prefix,t);
86b412c318SBarry Smith }
87b412c318SBarry Smith 
88b412c318SBarry Smith 
89b412c318SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetvectype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
90b412c318SBarry Smith {
91b412c318SBarry Smith   char *t;
92b412c318SBarry Smith 
93b412c318SBarry Smith   FIXCHAR(prefix,len,t);
94b412c318SBarry Smith   *ierr = DMSetVecType(*dm,t);
95b412c318SBarry Smith   FREECHAR(prefix,t);
96b412c318SBarry Smith }
97*c58f1c22SToby Isaac 
98*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmcreatelabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), int *ierr PETSC_END_LEN(lenN))
99*c58f1c22SToby Isaac {
100*c58f1c22SToby Isaac   char *lname;
101*c58f1c22SToby Isaac 
102*c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
103*c58f1c22SToby Isaac   *ierr = DMCreateLabel(*dm, lname);
104*c58f1c22SToby Isaac   FREECHAR(name, lname);
105*c58f1c22SToby Isaac }
106*c58f1c22SToby Isaac 
107*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmhaslabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscBool *hasLabel, int *ierr PETSC_END_LEN(lenN))
108*c58f1c22SToby Isaac {
109*c58f1c22SToby Isaac   char *lname;
110*c58f1c22SToby Isaac 
111*c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
112*c58f1c22SToby Isaac   *ierr = DMHasLabel(*dm, lname, hasLabel);
113*c58f1c22SToby Isaac   FREECHAR(name, lname);
114*c58f1c22SToby Isaac }
115*c58f1c22SToby Isaac 
116*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabelvalue_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *point, PetscInt *value, int *ierr PETSC_END_LEN(lenN))
117*c58f1c22SToby Isaac {
118*c58f1c22SToby Isaac   char *lname;
119*c58f1c22SToby Isaac 
120*c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
121*c58f1c22SToby Isaac   *ierr = DMGetLabelValue(*dm, lname, *point, value);
122*c58f1c22SToby Isaac   FREECHAR(name, lname);
123*c58f1c22SToby Isaac }
124*c58f1c22SToby Isaac 
125*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmsetlabelvalue_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *point, PetscInt *value, int *ierr PETSC_END_LEN(lenN))
126*c58f1c22SToby Isaac {
127*c58f1c22SToby Isaac   char *lname;
128*c58f1c22SToby Isaac 
129*c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
130*c58f1c22SToby Isaac   *ierr = DMSetLabelValue(*dm, lname, *point, *value);
131*c58f1c22SToby Isaac   FREECHAR(name, lname);
132*c58f1c22SToby Isaac }
133*c58f1c22SToby Isaac 
134*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabelsize_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *size, int *ierr PETSC_END_LEN(lenN))
135*c58f1c22SToby Isaac {
136*c58f1c22SToby Isaac   char *lname;
137*c58f1c22SToby Isaac 
138*c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
139*c58f1c22SToby Isaac   *ierr = DMGetLabelSize(*dm, lname, size);
140*c58f1c22SToby Isaac   FREECHAR(name, lname);
141*c58f1c22SToby Isaac }
142*c58f1c22SToby Isaac 
143*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabelidis_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), IS *ids, int *ierr PETSC_END_LEN(lenN))
144*c58f1c22SToby Isaac {
145*c58f1c22SToby Isaac   char *lname;
146*c58f1c22SToby Isaac 
147*c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
148*c58f1c22SToby Isaac   *ierr = DMGetLabelIdIS(*dm, lname, ids);
149*c58f1c22SToby Isaac   FREECHAR(name, lname);
150*c58f1c22SToby Isaac }
151*c58f1c22SToby Isaac 
152*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), DMLabel *label, int *ierr PETSC_END_LEN(lenN))
153*c58f1c22SToby Isaac {
154*c58f1c22SToby Isaac   char *lname;
155*c58f1c22SToby Isaac 
156*c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
157*c58f1c22SToby Isaac   *ierr = DMGetLabel(*dm, lname, label);
158*c58f1c22SToby Isaac   FREECHAR(name, lname);
159*c58f1c22SToby Isaac }
160*c58f1c22SToby Isaac 
161*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetstratumsize_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *value, PetscInt *size, int *ierr PETSC_END_LEN(lenN))
162*c58f1c22SToby Isaac {
163*c58f1c22SToby Isaac   char *lname;
164*c58f1c22SToby Isaac 
165*c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
166*c58f1c22SToby Isaac   *ierr = DMGetStratumSize(*dm, lname, *value, size);
167*c58f1c22SToby Isaac   FREECHAR(name, lname);
168*c58f1c22SToby Isaac }
169*c58f1c22SToby Isaac 
170*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetstratumis_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *value, IS *is, int *ierr PETSC_END_LEN(lenN))
171*c58f1c22SToby Isaac {
172*c58f1c22SToby Isaac   char *lname;
173*c58f1c22SToby Isaac 
174*c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
175*c58f1c22SToby Isaac   *ierr = DMGetStratumIS(*dm, lname, *value, is);
176*c58f1c22SToby Isaac   FREECHAR(name, lname);
177*c58f1c22SToby Isaac }
178