xref: /petsc/src/dm/interface/ftn-custom/zdmf.c (revision 19caf8f3c08b1f0ca9f5469bde385c134aa76c82)
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
818fb3ae4SVincent Le Chenadec #define dmsettype_                   DMSETTYPE
918fb3ae4SVincent Le Chenadec #define dmgettype_                   DMGETTYPE
10b412c318SBarry Smith #define dmsetmattype_                DMSETMATTYPE
11b412c318SBarry Smith #define dmsetvectype_                DMSETVECTYPE
12c0dedaeaSBarry Smith #define dmgetmattype_                DMGETMATTYPE
13c0dedaeaSBarry Smith #define dmgetvectype_                DMGETVECTYPE
14c58f1c22SToby Isaac #define dmlabelview_                 DMLABELVIEW
15c58f1c22SToby Isaac #define dmcreatelabel_               DMCREATELABEL
16c58f1c22SToby Isaac #define dmhaslabel_                  DMHASLABEL
17c58f1c22SToby Isaac #define dmgetlabelvalue_             DMGETLABELVALUE
18c58f1c22SToby Isaac #define dmsetlabelvalue_             DMSETLABELVALUE
19c58f1c22SToby Isaac #define dmgetlabelsize_              DMGETLABELSIZE
20c58f1c22SToby Isaac #define dmgetlabelidis_              DMGETLABELIDIS
21a7631e77SMatthew G. Knepley #define dmgetlabelname_              DMGETLABELNAME
22c58f1c22SToby Isaac #define dmgetlabel_                  DMGETLABEL
23c58f1c22SToby Isaac #define dmgetstratumsize_            DMGETSTRATUMSIZE
24c58f1c22SToby Isaac #define dmgetstratumis_              DMGETSTRATUMIS
254de306b1SToby Isaac #define dmsetstratumis_              DMSETSTRATUMIS
26d7188716SSatish Balay #define dmremovelabel_               DMREMOVELABEL
27fe2efc57SMark #define dmviewfromoptions_           DMVIEWFROMOPTIONS
289a42bb27SBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
2924e7ded0SBarry Smith #define dmview_                      dmview
305b400853SJed Brown #define dmsetoptionsprefix_          dmsetoptionsprefix
3118fb3ae4SVincent Le Chenadec #define dmsettype_                   dmsettype
3218fb3ae4SVincent Le Chenadec #define dmgettype_                   dmgettype
33b412c318SBarry Smith #define dmsetmattype_                dmsetmattype
34b412c318SBarry Smith #define dmsetvectype_                dmsetvectype
35c0dedaeaSBarry Smith #define dmgetmattype_                dmgetmattype
36c0dedaeaSBarry Smith #define dmgetvectype_                dmgetvectype
37c58f1c22SToby Isaac #define dmlabelview_                 dmlabelview
38c58f1c22SToby Isaac #define dmcreatelabel_               dmcreatelabel
39c58f1c22SToby Isaac #define dmhaslabel_                  dmhaslabel
40c58f1c22SToby Isaac #define dmgetlabelvalue_             dmgetlabelvalue
41c58f1c22SToby Isaac #define dmsetlabelvalue_             dmsetlabelvalue
42c58f1c22SToby Isaac #define dmgetlabelsize_              dmlabelsize
43c58f1c22SToby Isaac #define dmgetlabelidis_              dmlabelidis
44a7631e77SMatthew G. Knepley #define dmgetlabelname_              dmgetlabelname
45c58f1c22SToby Isaac #define dmgetlabel_                  dmgetlabel
46c58f1c22SToby Isaac #define dmgetstratumsize_            dmgetstratumsize
47c58f1c22SToby Isaac #define dmgetstratumis_              dmgetstratumis
484de306b1SToby Isaac #define dmsetstratumis_              dmsetstratumis
49d7188716SSatish Balay #define dmremovelabel_               dmremovelabel
50fe2efc57SMark #define dmviewfromoptions_           dmviewfromoptions
519a42bb27SBarry Smith #endif
529a42bb27SBarry Smith 
53*19caf8f3SSatish Balay PETSC_EXTERN void dmgetmattype_(DM *mm,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
54c0dedaeaSBarry Smith {
55c0dedaeaSBarry Smith   const char *tname;
56c0dedaeaSBarry Smith 
57c0dedaeaSBarry Smith   *ierr = DMGetMatType(*mm,&tname);if (*ierr) return;
58c0dedaeaSBarry Smith   if (name != PETSC_NULL_CHARACTER_Fortran) {
59c0dedaeaSBarry Smith     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
60c0dedaeaSBarry Smith   }
61c0dedaeaSBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len);
62c0dedaeaSBarry Smith }
63c0dedaeaSBarry Smith 
64*19caf8f3SSatish Balay PETSC_EXTERN void dmgetvectype_(DM *mm,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
65c0dedaeaSBarry Smith {
66c0dedaeaSBarry Smith   const char *tname;
67c0dedaeaSBarry Smith 
68c0dedaeaSBarry Smith   *ierr = DMGetVecType(*mm,&tname);if (*ierr) return;
69c0dedaeaSBarry Smith   if (name != PETSC_NULL_CHARACTER_Fortran) {
70c0dedaeaSBarry Smith     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
71c0dedaeaSBarry Smith   }
72c0dedaeaSBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len);
73c0dedaeaSBarry Smith }
74c0dedaeaSBarry Smith 
75*19caf8f3SSatish Balay PETSC_EXTERN void dmview_(DM *da,PetscViewer *vin,PetscErrorCode *ierr)
769a42bb27SBarry Smith {
779a42bb27SBarry Smith   PetscViewer v;
789a42bb27SBarry Smith   PetscPatchDefaultViewers_Fortran(vin,v);
799a42bb27SBarry Smith   *ierr = DMView(*da,v);
809a42bb27SBarry Smith }
81950540a4SJed Brown 
82*19caf8f3SSatish Balay PETSC_EXTERN void dmsetoptionsprefix_(DM *dm,char* prefix, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
835b400853SJed Brown {
845b400853SJed Brown   char *t;
855b400853SJed Brown 
865b400853SJed Brown   FIXCHAR(prefix,len,t);
87d49bb8f9SBarry Smith   *ierr = DMSetOptionsPrefix(*dm,t);if (*ierr) return;
885b400853SJed Brown   FREECHAR(prefix,t);
895b400853SJed Brown }
90b412c318SBarry Smith 
91*19caf8f3SSatish Balay PETSC_EXTERN void dmsettype_(DM *x,char* type_name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
9218fb3ae4SVincent Le Chenadec {
9318fb3ae4SVincent Le Chenadec   char *t;
9418fb3ae4SVincent Le Chenadec 
9518fb3ae4SVincent Le Chenadec   FIXCHAR(type_name,len,t);
96d49bb8f9SBarry Smith   *ierr = DMSetType(*x,t);if (*ierr) return;
9718fb3ae4SVincent Le Chenadec   FREECHAR(type_name,t);
9818fb3ae4SVincent Le Chenadec }
9918fb3ae4SVincent Le Chenadec 
100*19caf8f3SSatish Balay PETSC_EXTERN void dmgettype_(DM *mm,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
10118fb3ae4SVincent Le Chenadec {
10218fb3ae4SVincent Le Chenadec   const char *tname;
10318fb3ae4SVincent Le Chenadec 
10418fb3ae4SVincent Le Chenadec   *ierr = DMGetType(*mm,&tname);if (*ierr) return;
10518fb3ae4SVincent Le Chenadec   if (name != PETSC_NULL_CHARACTER_Fortran) {
10618fb3ae4SVincent Le Chenadec     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
10718fb3ae4SVincent Le Chenadec   }
10818fb3ae4SVincent Le Chenadec   FIXRETURNCHAR(PETSC_TRUE,name,len);
10918fb3ae4SVincent Le Chenadec 
11018fb3ae4SVincent Le Chenadec }
11118fb3ae4SVincent Le Chenadec 
112*19caf8f3SSatish Balay PETSC_EXTERN void dmsetmattype_(DM *dm,char* prefix, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
113b412c318SBarry Smith {
114b412c318SBarry Smith   char *t;
115b412c318SBarry Smith 
116b412c318SBarry Smith   FIXCHAR(prefix,len,t);
117d49bb8f9SBarry Smith   *ierr = DMSetMatType(*dm,t);if (*ierr) return;
118b412c318SBarry Smith   FREECHAR(prefix,t);
119b412c318SBarry Smith }
120b412c318SBarry Smith 
121b412c318SBarry Smith 
122*19caf8f3SSatish Balay PETSC_EXTERN void dmsetvectype_(DM *dm,char* prefix, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
123b412c318SBarry Smith {
124b412c318SBarry Smith   char *t;
125b412c318SBarry Smith 
126b412c318SBarry Smith   FIXCHAR(prefix,len,t);
127d49bb8f9SBarry Smith   *ierr = DMSetVecType(*dm,t);if (*ierr) return;
128b412c318SBarry Smith   FREECHAR(prefix,t);
129b412c318SBarry Smith }
130c58f1c22SToby Isaac 
131*19caf8f3SSatish Balay PETSC_EXTERN void dmcreatelabel_(DM *dm, char* name, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
132c58f1c22SToby Isaac {
133c58f1c22SToby Isaac   char *lname;
134c58f1c22SToby Isaac 
135c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
136d49bb8f9SBarry Smith   *ierr = DMCreateLabel(*dm, lname);if (*ierr) return;
137c58f1c22SToby Isaac   FREECHAR(name, lname);
138c58f1c22SToby Isaac }
139c58f1c22SToby Isaac 
140*19caf8f3SSatish Balay PETSC_EXTERN void dmhaslabel_(DM *dm, char* name, PetscBool *hasLabel, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
141c58f1c22SToby Isaac {
142c58f1c22SToby Isaac   char *lname;
143c58f1c22SToby Isaac 
144c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
145d49bb8f9SBarry Smith   *ierr = DMHasLabel(*dm, lname, hasLabel);if (*ierr) return;
146c58f1c22SToby Isaac   FREECHAR(name, lname);
147c58f1c22SToby Isaac }
148c58f1c22SToby Isaac 
149*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabelvalue_(DM *dm, char* name, PetscInt *point, PetscInt *value, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
150c58f1c22SToby Isaac {
151c58f1c22SToby Isaac   char *lname;
152c58f1c22SToby Isaac 
153c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
154d49bb8f9SBarry Smith   *ierr = DMGetLabelValue(*dm, lname, *point, value);if (*ierr) return;
155c58f1c22SToby Isaac   FREECHAR(name, lname);
156c58f1c22SToby Isaac }
157c58f1c22SToby Isaac 
158*19caf8f3SSatish Balay PETSC_EXTERN void dmsetlabelvalue_(DM *dm, char* name, PetscInt *point, PetscInt *value, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
159c58f1c22SToby Isaac {
160c58f1c22SToby Isaac   char *lname;
161c58f1c22SToby Isaac 
162c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
163d49bb8f9SBarry Smith   *ierr = DMSetLabelValue(*dm, lname, *point, *value);if (*ierr) return;
164c58f1c22SToby Isaac   FREECHAR(name, lname);
165c58f1c22SToby Isaac }
166c58f1c22SToby Isaac 
167*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabelsize_(DM *dm, char* name, PetscInt *size, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
168c58f1c22SToby Isaac {
169c58f1c22SToby Isaac   char *lname;
170c58f1c22SToby Isaac 
171c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
172d49bb8f9SBarry Smith   *ierr = DMGetLabelSize(*dm, lname, size);if (*ierr) return;
173c58f1c22SToby Isaac   FREECHAR(name, lname);
174c58f1c22SToby Isaac }
175c58f1c22SToby Isaac 
176*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabelidis_(DM *dm, char* name, IS *ids, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
177c58f1c22SToby Isaac {
178c58f1c22SToby Isaac   char *lname;
179c58f1c22SToby Isaac 
180c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
181d49bb8f9SBarry Smith   *ierr = DMGetLabelIdIS(*dm, lname, ids);if (*ierr) return;
182c58f1c22SToby Isaac   FREECHAR(name, lname);
183c58f1c22SToby Isaac }
184c58f1c22SToby Isaac 
185*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabelname_(DM *dm,PetscInt *n,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
186a7631e77SMatthew G. Knepley {
187a7631e77SMatthew G. Knepley   const char *tmp;
1889566978fSMatthew G. Knepley   *ierr = DMGetLabelName(*dm,*n,&tmp);
189a7631e77SMatthew G. Knepley   *ierr = PetscStrncpy(name,tmp,len);if (*ierr) return;
190a7631e77SMatthew G. Knepley   FIXRETURNCHAR(PETSC_TRUE,name,len);
191a7631e77SMatthew G. Knepley }
192a7631e77SMatthew G. Knepley 
193*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabel_(DM *dm, char* name, DMLabel *label, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
194c58f1c22SToby Isaac {
195c58f1c22SToby Isaac   char *lname;
196c58f1c22SToby Isaac 
197c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
198d49bb8f9SBarry Smith   *ierr = DMGetLabel(*dm, lname, label);if (*ierr) return;
199c58f1c22SToby Isaac   FREECHAR(name, lname);
200c58f1c22SToby Isaac }
201c58f1c22SToby Isaac 
202*19caf8f3SSatish Balay PETSC_EXTERN void dmgetstratumsize_(DM *dm, char* name, PetscInt *value, PetscInt *size, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
203c58f1c22SToby Isaac {
204c58f1c22SToby Isaac   char *lname;
205c58f1c22SToby Isaac 
206c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
207d49bb8f9SBarry Smith   *ierr = DMGetStratumSize(*dm, lname, *value, size);if (*ierr) return;
208c58f1c22SToby Isaac   FREECHAR(name, lname);
209c58f1c22SToby Isaac }
210c58f1c22SToby Isaac 
211*19caf8f3SSatish Balay PETSC_EXTERN void dmgetstratumis_(DM *dm, char* name, PetscInt *value, IS *is, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
212c58f1c22SToby Isaac {
213c58f1c22SToby Isaac   char *lname;
214c58f1c22SToby Isaac 
215c58f1c22SToby Isaac   FIXCHAR(name, lenN, lname);
216d49bb8f9SBarry Smith   *ierr = DMGetStratumIS(*dm, lname, *value, is);if (*ierr) return;
21706c2e117SBarry Smith   if (is && !*is) *is = (IS)0;
218c58f1c22SToby Isaac   FREECHAR(name, lname);
219c58f1c22SToby Isaac }
220d7188716SSatish Balay 
221*19caf8f3SSatish Balay PETSC_EXTERN void dmsetstratumis_(DM *dm, char* name, PetscInt *value, IS *is, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
2224de306b1SToby Isaac {
2234de306b1SToby Isaac   char *lname;
2244de306b1SToby Isaac 
2254de306b1SToby Isaac   FIXCHAR(name, lenN, lname);
226d49bb8f9SBarry Smith   *ierr = DMSetStratumIS(*dm, lname, *value, *is);if (*ierr) return;
2274de306b1SToby Isaac   FREECHAR(name, lname);
2284de306b1SToby Isaac }
2294de306b1SToby Isaac 
230*19caf8f3SSatish Balay PETSC_EXTERN void dmremovelabel_(DM *dm, char* name, DMLabel *label, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
231d7188716SSatish Balay {
232d7188716SSatish Balay   char *lname;
233d7188716SSatish Balay 
234d7188716SSatish Balay   FIXCHAR(name, lenN, lname);
235d49bb8f9SBarry Smith   *ierr = DMRemoveLabel(*dm, lname, label);if (*ierr) return;
236d7188716SSatish Balay   FREECHAR(name, lname);
237d7188716SSatish Balay }
238fe2efc57SMark 
239*19caf8f3SSatish Balay PETSC_EXTERN void dmviewfromoptions_(DM *dm,PetscObject obj,char* type,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
240fe2efc57SMark {
241fe2efc57SMark   char *t;
242fe2efc57SMark 
243fe2efc57SMark   FIXCHAR(type,len,t);
244fe2efc57SMark   *ierr = DMViewFromOptions(*dm,obj,t);if (*ierr) return;
245fe2efc57SMark   FREECHAR(type,t);
246fe2efc57SMark }
247