xref: /petsc/src/dm/interface/ftn-custom/zdmf.c (revision d7cc930e14e615e9907267aaa472dd0ccceeab82)
1 #include <petsc/private/fortranimpl.h>
2 #include <petscdm.h>
3 #include <petscviewer.h>
4 
5 #if defined(PETSC_HAVE_FORTRAN_CAPS)
6 #define dmview_                      DMVIEW
7 #define dmsetoptionsprefix_          DMSETOPTIONSPREFIX
8 #define dmsettype_                   DMSETTYPE
9 #define dmgettype_                   DMGETTYPE
10 #define dmsetmattype_                DMSETMATTYPE
11 #define dmsetvectype_                DMSETVECTYPE
12 #define dmgetmattype_                DMGETMATTYPE
13 #define dmgetvectype_                DMGETVECTYPE
14 #define dmlabelview_                 DMLABELVIEW
15 #define dmcreatelabel_               DMCREATELABEL
16 #define dmhaslabel_                  DMHASLABEL
17 #define dmgetlabelvalue_             DMGETLABELVALUE
18 #define dmsetlabelvalue_             DMSETLABELVALUE
19 #define dmgetlabelsize_              DMGETLABELSIZE
20 #define dmgetlabelidis_              DMGETLABELIDIS
21 #define dmgetlabelname_              DMGETLABELNAME
22 #define dmgetlabel_                  DMGETLABEL
23 #define dmgetstratumsize_            DMGETSTRATUMSIZE
24 #define dmgetstratumis_              DMGETSTRATUMIS
25 #define dmsetstratumis_              DMSETSTRATUMIS
26 #define dmremovelabel_               DMREMOVELABEL
27 #define dmviewfromoptions_           DMVIEWFROMOPTIONS
28 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
29 #define dmview_                      dmview
30 #define dmsetoptionsprefix_          dmsetoptionsprefix
31 #define dmsettype_                   dmsettype
32 #define dmgettype_                   dmgettype
33 #define dmsetmattype_                dmsetmattype
34 #define dmsetvectype_                dmsetvectype
35 #define dmgetmattype_                dmgetmattype
36 #define dmgetvectype_                dmgetvectype
37 #define dmlabelview_                 dmlabelview
38 #define dmcreatelabel_               dmcreatelabel
39 #define dmhaslabel_                  dmhaslabel
40 #define dmgetlabelvalue_             dmgetlabelvalue
41 #define dmsetlabelvalue_             dmsetlabelvalue
42 #define dmgetlabelsize_              dmlabelsize
43 #define dmgetlabelidis_              dmlabelidis
44 #define dmgetlabelname_              dmgetlabelname
45 #define dmgetlabel_                  dmgetlabel
46 #define dmgetstratumsize_            dmgetstratumsize
47 #define dmgetstratumis_              dmgetstratumis
48 #define dmsetstratumis_              dmsetstratumis
49 #define dmremovelabel_               dmremovelabel
50 #define dmviewfromoptions_           dmviewfromoptions
51 #endif
52 
53 PETSC_EXTERN void dmgetmattype_(DM *mm,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
54 {
55   const char *tname;
56 
57   *ierr = DMGetMatType(*mm,&tname);if (*ierr) return;
58   if (name != PETSC_NULL_CHARACTER_Fortran) {
59     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
60   }
61   FIXRETURNCHAR(PETSC_TRUE,name,len);
62 }
63 
64 PETSC_EXTERN void dmgetvectype_(DM *mm,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
65 {
66   const char *tname;
67 
68   *ierr = DMGetVecType(*mm,&tname);if (*ierr) return;
69   if (name != PETSC_NULL_CHARACTER_Fortran) {
70     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
71   }
72   FIXRETURNCHAR(PETSC_TRUE,name,len);
73 }
74 
75 PETSC_EXTERN void dmview_(DM *da,PetscViewer *vin,PetscErrorCode *ierr)
76 {
77   PetscViewer v;
78   PetscPatchDefaultViewers_Fortran(vin,v);
79   *ierr = DMView(*da,v);
80 }
81 
82 PETSC_EXTERN void dmsetoptionsprefix_(DM *dm,char* prefix, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
83 {
84   char *t;
85 
86   FIXCHAR(prefix,len,t);
87   *ierr = DMSetOptionsPrefix(*dm,t);if (*ierr) return;
88   FREECHAR(prefix,t);
89 }
90 
91 PETSC_EXTERN void dmsettype_(DM *x,char* type_name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
92 {
93   char *t;
94 
95   FIXCHAR(type_name,len,t);
96   *ierr = DMSetType(*x,t);if (*ierr) return;
97   FREECHAR(type_name,t);
98 }
99 
100 PETSC_EXTERN void dmgettype_(DM *mm,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
101 {
102   const char *tname;
103 
104   *ierr = DMGetType(*mm,&tname);if (*ierr) return;
105   if (name != PETSC_NULL_CHARACTER_Fortran) {
106     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
107   }
108   FIXRETURNCHAR(PETSC_TRUE,name,len);
109 
110 }
111 
112 PETSC_EXTERN void dmsetmattype_(DM *dm,char* prefix, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
113 {
114   char *t;
115 
116   FIXCHAR(prefix,len,t);
117   *ierr = DMSetMatType(*dm,t);if (*ierr) return;
118   FREECHAR(prefix,t);
119 }
120 
121 
122 PETSC_EXTERN void dmsetvectype_(DM *dm,char* prefix, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
123 {
124   char *t;
125 
126   FIXCHAR(prefix,len,t);
127   *ierr = DMSetVecType(*dm,t);if (*ierr) return;
128   FREECHAR(prefix,t);
129 }
130 
131 PETSC_EXTERN void dmcreatelabel_(DM *dm, char* name, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
132 {
133   char *lname;
134 
135   FIXCHAR(name, lenN, lname);
136   *ierr = DMCreateLabel(*dm, lname);if (*ierr) return;
137   FREECHAR(name, lname);
138 }
139 
140 PETSC_EXTERN void dmhaslabel_(DM *dm, char* name, PetscBool *hasLabel, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
141 {
142   char *lname;
143 
144   FIXCHAR(name, lenN, lname);
145   *ierr = DMHasLabel(*dm, lname, hasLabel);if (*ierr) return;
146   FREECHAR(name, lname);
147 }
148 
149 PETSC_EXTERN void dmgetlabelvalue_(DM *dm, char* name, PetscInt *point, PetscInt *value, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
150 {
151   char *lname;
152 
153   FIXCHAR(name, lenN, lname);
154   *ierr = DMGetLabelValue(*dm, lname, *point, value);if (*ierr) return;
155   FREECHAR(name, lname);
156 }
157 
158 PETSC_EXTERN void dmsetlabelvalue_(DM *dm, char* name, PetscInt *point, PetscInt *value, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
159 {
160   char *lname;
161 
162   FIXCHAR(name, lenN, lname);
163   *ierr = DMSetLabelValue(*dm, lname, *point, *value);if (*ierr) return;
164   FREECHAR(name, lname);
165 }
166 
167 PETSC_EXTERN void dmgetlabelsize_(DM *dm, char* name, PetscInt *size, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
168 {
169   char *lname;
170 
171   FIXCHAR(name, lenN, lname);
172   *ierr = DMGetLabelSize(*dm, lname, size);if (*ierr) return;
173   FREECHAR(name, lname);
174 }
175 
176 PETSC_EXTERN void dmgetlabelidis_(DM *dm, char* name, IS *ids, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
177 {
178   char *lname;
179 
180   FIXCHAR(name, lenN, lname);
181   *ierr = DMGetLabelIdIS(*dm, lname, ids);if (*ierr) return;
182   FREECHAR(name, lname);
183 }
184 
185 PETSC_EXTERN void dmgetlabelname_(DM *dm,PetscInt *n,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
186 {
187   const char *tmp;
188   *ierr = DMGetLabelName(*dm,*n,&tmp);
189   *ierr = PetscStrncpy(name,tmp,len);if (*ierr) return;
190   FIXRETURNCHAR(PETSC_TRUE,name,len);
191 }
192 
193 PETSC_EXTERN void dmgetlabel_(DM *dm, char* name, DMLabel *label, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
194 {
195   char *lname;
196 
197   FIXCHAR(name, lenN, lname);
198   *ierr = DMGetLabel(*dm, lname, label);if (*ierr) return;
199   FREECHAR(name, lname);
200 }
201 
202 PETSC_EXTERN void dmgetstratumsize_(DM *dm, char* name, PetscInt *value, PetscInt *size, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
203 {
204   char *lname;
205 
206   FIXCHAR(name, lenN, lname);
207   *ierr = DMGetStratumSize(*dm, lname, *value, size);if (*ierr) return;
208   FREECHAR(name, lname);
209 }
210 
211 PETSC_EXTERN void dmgetstratumis_(DM *dm, char* name, PetscInt *value, IS *is, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
212 {
213   char *lname;
214 
215   FIXCHAR(name, lenN, lname);
216   *ierr = DMGetStratumIS(*dm, lname, *value, is);if (*ierr) return;
217   if (is && !*is) *is = (IS)0;
218   FREECHAR(name, lname);
219 }
220 
221 PETSC_EXTERN void dmsetstratumis_(DM *dm, char* name, PetscInt *value, IS *is, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
222 {
223   char *lname;
224 
225   FIXCHAR(name, lenN, lname);
226   *ierr = DMSetStratumIS(*dm, lname, *value, *is);if (*ierr) return;
227   FREECHAR(name, lname);
228 }
229 
230 PETSC_EXTERN void dmremovelabel_(DM *dm, char* name, DMLabel *label, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN)
231 {
232   char *lname;
233 
234   FIXCHAR(name, lenN, lname);
235   *ierr = DMRemoveLabel(*dm, lname, label);if (*ierr) return;
236   FREECHAR(name, lname);
237 }
238 
239 PETSC_EXTERN void dmviewfromoptions_(DM *dm,PetscObject obj,char* type,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
240 {
241   char *t;
242 
243   FIXCHAR(type,len,t);
244   CHKFORTRANNULLOBJECT(obj);
245   *ierr = DMViewFromOptions(*dm,obj,t);if (*ierr) return;
246   FREECHAR(type,t);
247 }
248