xref: /petsc/src/dm/interface/ftn-custom/zdmf.c (revision 4de306b1788ca5e980923122e5ab667b9b173b87)
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
12c58f1c22SToby Isaac #define dmlabelview_                 DMLABELVIEW
13c58f1c22SToby Isaac #define dmcreatelabel_               DMCREATELABEL
14c58f1c22SToby Isaac #define dmhaslabel_                  DMHASLABEL
15c58f1c22SToby Isaac #define dmgetlabelvalue_             DMGETLABELVALUE
16c58f1c22SToby Isaac #define dmsetlabelvalue_             DMSETLABELVALUE
17c58f1c22SToby Isaac #define dmgetlabelsize_              DMGETLABELSIZE
18c58f1c22SToby Isaac #define dmgetlabelidis_              DMGETLABELIDIS
19c58f1c22SToby Isaac #define dmgetlabel_                  DMGETLABEL
20c58f1c22SToby Isaac #define dmgetstratumsize_            DMGETSTRATUMSIZE
21c58f1c22SToby Isaac #define dmgetstratumis_              DMGETSTRATUMIS
22*4de306b1SToby Isaac #define dmsetstratumis_              DMSETSTRATUMIS
23d7188716SSatish Balay #define dmremovelabel_               DMREMOVELABEL
249a42bb27SBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
2524e7ded0SBarry Smith #define dmview_                      dmview
265b400853SJed Brown #define dmsetoptionsprefix_          dmsetoptionsprefix
27b412c318SBarry Smith #define dmsetmattype_                dmsetmattype
28b412c318SBarry Smith #define dmsetvectype_                dmsetvectype
29c0dedaeaSBarry Smith #define dmgetmattype_                dmgetmattype
30c0dedaeaSBarry Smith #define dmgetvectype_                dmgetvectype
31c58f1c22SToby Isaac #define dmlabelview_                 dmlabelview
32c58f1c22SToby Isaac #define dmcreatelabel_               dmcreatelabel
33c58f1c22SToby Isaac #define dmhaslabel_                  dmhaslabel
34c58f1c22SToby Isaac #define dmgetlabelvalue_             dmgetlabelvalue
35c58f1c22SToby Isaac #define dmsetlabelvalue_             dmsetlabelvalue
36c58f1c22SToby Isaac #define dmgetlabelsize_              dmlabelsize
37c58f1c22SToby Isaac #define dmgetlabelidis_              dmlabelidis
38c58f1c22SToby Isaac #define dmgetlabel_                  dmgetlabel
39c58f1c22SToby Isaac #define dmgetstratumsize_            dmgetstratumsize
40c58f1c22SToby Isaac #define dmgetstratumis_              dmgetstratumis
41*4de306b1SToby Isaac #define dmsetstratumis_              dmsetstratumis
42d7188716SSatish Balay #define dmremovelabel_               dmremovelabel
439a42bb27SBarry Smith #endif
449a42bb27SBarry Smith 
45c0dedaeaSBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetmattype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
46c0dedaeaSBarry Smith {
47c0dedaeaSBarry Smith   const char *tname;
48c0dedaeaSBarry Smith 
49c0dedaeaSBarry Smith   *ierr = DMGetMatType(*mm,&tname);if (*ierr) return;
50c0dedaeaSBarry Smith   if (name != PETSC_NULL_CHARACTER_Fortran) {
51c0dedaeaSBarry Smith     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
52c0dedaeaSBarry Smith   }
53c0dedaeaSBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len);
54c0dedaeaSBarry Smith }
55c0dedaeaSBarry Smith 
56c0dedaeaSBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetvectype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
57c0dedaeaSBarry Smith {
58c0dedaeaSBarry Smith   const char *tname;
59c0dedaeaSBarry Smith 
60c0dedaeaSBarry Smith   *ierr = DMGetVecType(*mm,&tname);if (*ierr) return;
61c0dedaeaSBarry Smith   if (name != PETSC_NULL_CHARACTER_Fortran) {
62c0dedaeaSBarry Smith     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
63c0dedaeaSBarry Smith   }
64c0dedaeaSBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len);
65c0dedaeaSBarry Smith }
66c0dedaeaSBarry Smith 
678cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmview_(DM *da,PetscViewer *vin,PetscErrorCode *ierr)
689a42bb27SBarry Smith {
699a42bb27SBarry Smith   PetscViewer v;
709a42bb27SBarry Smith   PetscPatchDefaultViewers_Fortran(vin,v);
719a42bb27SBarry Smith   *ierr = DMView(*da,v);
729a42bb27SBarry Smith }
73950540a4SJed Brown 
748cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmsetoptionsprefix_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
755b400853SJed Brown {
765b400853SJed Brown   char *t;
775b400853SJed Brown 
785b400853SJed Brown   FIXCHAR(prefix,len,t);
795b400853SJed Brown   *ierr = DMSetOptionsPrefix(*dm,t);
805b400853SJed Brown   FREECHAR(prefix,t);
815b400853SJed Brown }
82b412c318SBarry Smith 
83b412c318SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetmattype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
84b412c318SBarry Smith {
85b412c318SBarry Smith   char *t;
86b412c318SBarry Smith 
87b412c318SBarry Smith   FIXCHAR(prefix,len,t);
88b412c318SBarry Smith   *ierr = DMSetMatType(*dm,t);
89b412c318SBarry Smith   FREECHAR(prefix,t);
90b412c318SBarry Smith }
91b412c318SBarry Smith 
92b412c318SBarry Smith 
93b412c318SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetvectype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
94b412c318SBarry Smith {
95b412c318SBarry Smith   char *t;
96b412c318SBarry Smith 
97b412c318SBarry Smith   FIXCHAR(prefix,len,t);
98b412c318SBarry Smith   *ierr = DMSetVecType(*dm,t);
99b412c318SBarry Smith   FREECHAR(prefix,t);
100b412c318SBarry Smith }
101c58f1c22SToby Isaac 
102c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmcreatelabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), int *ierr PETSC_END_LEN(lenN))
103c58f1c22SToby Isaac {
104c58f1c22SToby Isaac   char *lname;
105c58f1c22SToby Isaac 
106c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
107c58f1c22SToby Isaac   *ierr = DMCreateLabel(*dm, lname);
108c58f1c22SToby Isaac   FREECHAR(name, lname);
109c58f1c22SToby Isaac }
110c58f1c22SToby Isaac 
111c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmhaslabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscBool *hasLabel, int *ierr PETSC_END_LEN(lenN))
112c58f1c22SToby Isaac {
113c58f1c22SToby Isaac   char *lname;
114c58f1c22SToby Isaac 
115c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
116c58f1c22SToby Isaac   *ierr = DMHasLabel(*dm, lname, hasLabel);
117c58f1c22SToby Isaac   FREECHAR(name, lname);
118c58f1c22SToby Isaac }
119c58f1c22SToby Isaac 
120c58f1c22SToby 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))
121c58f1c22SToby Isaac {
122c58f1c22SToby Isaac   char *lname;
123c58f1c22SToby Isaac 
124c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
125c58f1c22SToby Isaac   *ierr = DMGetLabelValue(*dm, lname, *point, value);
126c58f1c22SToby Isaac   FREECHAR(name, lname);
127c58f1c22SToby Isaac }
128c58f1c22SToby Isaac 
129c58f1c22SToby 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))
130c58f1c22SToby Isaac {
131c58f1c22SToby Isaac   char *lname;
132c58f1c22SToby Isaac 
133c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
134c58f1c22SToby Isaac   *ierr = DMSetLabelValue(*dm, lname, *point, *value);
135c58f1c22SToby Isaac   FREECHAR(name, lname);
136c58f1c22SToby Isaac }
137c58f1c22SToby Isaac 
138c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabelsize_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *size, int *ierr PETSC_END_LEN(lenN))
139c58f1c22SToby Isaac {
140c58f1c22SToby Isaac   char *lname;
141c58f1c22SToby Isaac 
142c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
143c58f1c22SToby Isaac   *ierr = DMGetLabelSize(*dm, lname, size);
144c58f1c22SToby Isaac   FREECHAR(name, lname);
145c58f1c22SToby Isaac }
146c58f1c22SToby Isaac 
147c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabelidis_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), IS *ids, int *ierr PETSC_END_LEN(lenN))
148c58f1c22SToby Isaac {
149c58f1c22SToby Isaac   char *lname;
150c58f1c22SToby Isaac 
151c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
152c58f1c22SToby Isaac   *ierr = DMGetLabelIdIS(*dm, lname, ids);
153c58f1c22SToby Isaac   FREECHAR(name, lname);
154c58f1c22SToby Isaac }
155c58f1c22SToby Isaac 
156c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), DMLabel *label, int *ierr PETSC_END_LEN(lenN))
157c58f1c22SToby Isaac {
158c58f1c22SToby Isaac   char *lname;
159c58f1c22SToby Isaac 
160c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
161c58f1c22SToby Isaac   *ierr = DMGetLabel(*dm, lname, label);
162c58f1c22SToby Isaac   FREECHAR(name, lname);
163c58f1c22SToby Isaac }
164c58f1c22SToby Isaac 
165c58f1c22SToby 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))
166c58f1c22SToby Isaac {
167c58f1c22SToby Isaac   char *lname;
168c58f1c22SToby Isaac 
169c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
170c58f1c22SToby Isaac   *ierr = DMGetStratumSize(*dm, lname, *value, size);
171c58f1c22SToby Isaac   FREECHAR(name, lname);
172c58f1c22SToby Isaac }
173c58f1c22SToby Isaac 
174c58f1c22SToby 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))
175c58f1c22SToby Isaac {
176c58f1c22SToby Isaac   char *lname;
177c58f1c22SToby Isaac 
178c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
179c58f1c22SToby Isaac   *ierr = DMGetStratumIS(*dm, lname, *value, is);
180c58f1c22SToby Isaac   FREECHAR(name, lname);
181c58f1c22SToby Isaac }
182d7188716SSatish Balay 
183*4de306b1SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmsetstratumis_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *value, IS *is, int *ierr PETSC_END_LEN(lenN))
184*4de306b1SToby Isaac {
185*4de306b1SToby Isaac   char *lname;
186*4de306b1SToby Isaac 
187*4de306b1SToby Isaac   FIXCHAR(name, lenN, lname);
188*4de306b1SToby Isaac   *ierr = DMSetStratumIS(*dm, lname, *value, *is);
189*4de306b1SToby Isaac   FREECHAR(name, lname);
190*4de306b1SToby Isaac }
191*4de306b1SToby Isaac 
192d7188716SSatish Balay PETSC_EXTERN void PETSC_STDCALL dmremovelabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), DMLabel *label, int *ierr PETSC_END_LEN(lenN))
193d7188716SSatish Balay {
194d7188716SSatish Balay   char *lname;
195d7188716SSatish Balay 
196d7188716SSatish Balay   FIXCHAR(name, lenN, lname);
197d7188716SSatish Balay   *ierr = DMRemoveLabel(*dm, lname, label);
198d7188716SSatish Balay   FREECHAR(name, lname);
199d7188716SSatish Balay }
200