~ubuntu-branches/ubuntu/warty/petsc/warty

« back to all changes in this revision

Viewing changes to src/fortran/custom/zsles.c.html

  • Committer: Bazaar Package Importer
  • Author(s): Adam C. Powell, IV
  • Date: 2004-06-07 13:41:43 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040607134143-92p586zrauvie0le
Tags: 2.2.0-2
* Upstream patch level 2.
* New PETSC_BOPT_EXTRA option for different BOPT and lib names, with _c++
  symlinks only for plain and single (closes: #249617).
* New DEBIAN_DIST=contrib option to link with hypre, parmetis (closes:
  #249619).
* Combined petsc-c and petsc-fortran substvars into petsc-compilers.
* Extra quote in -dev prerm eliminates "too many arguments" problem.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
<html>
4
4
<head>
5
5
<title></title>
6
 
<meta name="generator" content="c2html 0.9.1">
7
 
<meta name="date" content="2002-05-31T17:02:45+00:00">
 
6
<meta name="generator" content="c2html 0.9.4">
 
7
<meta name="date" content="2004-02-27T20:04:57+00:00">
8
8
</head>
9
9
 
10
10
<body bgcolor="#FFFFFF">
11
11
<pre width="80"><a name="line1">  1: </a><font color="#B22222">/*$Id: zsles.c,v 1.37 2001/09/11 16:34:57 bsmith Exp $*/</font>
12
12
 
13
13
<a name="line3"> 3: </a> #include <A href="../../../src/fortran/custom/zpetsc.h.html">src/fortran/custom/zpetsc.h</A>
14
 
<a name="line4"> 4: </a> #include <A href="../../../include/petscsles.h.html">petscsles.h</A>
 
14
<a name="line4"> 4: </a> #include <A href="../../../include/petscksp.h.html">petscksp.h</A>
15
15
<a name="line5"> 5: </a> #include <A href="../../../include/petscda.h.html">petscda.h</A>
16
16
 
17
17
<a name="line7">  7: </a><font color="#A020F0">#ifdef PETSC_HAVE_FORTRAN_CAPS</font>
18
 
<a name="line8">  8: </a><strong><font color="#228B22">#define slesdestroy_             SLESDESTROY</font></strong>
19
 
<a name="line9">  9: </a><strong><font color="#228B22">#define slescreate_              SLESCREATE</font></strong>
20
 
<a name="line10"> 10: </a><strong><font color="#228B22">#define slesgetpc_               SLESGETPC</font></strong>
21
 
<a name="line11"> 11: </a><strong><font color="#228B22">#define slessetoptionsprefix_    SLESSETOPTIONSPREFIX</font></strong>
22
 
<a name="line12"> 12: </a><strong><font color="#228B22">#define slesappendoptionsprefix_ SLESAPPENDOPTIONSPREFIX</font></strong>
23
 
<a name="line13"> 13: </a><strong><font color="#228B22">#define slesgetksp_              SLESGETKSP</font></strong>
24
 
<a name="line14"> 14: </a><strong><font color="#228B22">#define slesgetoptionsprefix_    SLESGETOPTIONSPREFIX</font></strong>
25
 
<a name="line15"> 15: </a><strong><font color="#228B22">#define slesview_                SLESVIEW</font></strong>
26
 
<a name="line16"> 16: </a><strong><font color="#228B22">#define dmmgcreate_              DMMGCREATE</font></strong>
27
 
<a name="line17"> 17: </a><strong><font color="#228B22">#define dmmgdestroy_             DMMGDESTROY</font></strong>
28
 
<a name="line18"> 18: </a><strong><font color="#228B22">#define dmmgsetup_               DMMGSETUP</font></strong>
29
 
<a name="line19"> 19: </a><strong><font color="#228B22">#define dmmgsetdm_               DMMGSETDM</font></strong>
30
 
<a name="line20"> 20: </a><strong><font color="#228B22">#define dmmgview_                DMMGVIEW</font></strong>
31
 
<a name="line21"> 21: </a><strong><font color="#228B22">#define dmmgsolve_               DMMGSOLVE</font></strong>
32
 
<a name="line22"> 22: </a><strong><font color="#228B22">#define dmmggetda_               DMMGGETDA</font></strong>
33
 
<a name="line23"> 23: </a><strong><font color="#228B22">#define dmmgsetsles_             DMMGSETSLES</font></strong>
34
 
<a name="line24"> 24: </a><strong><font color="#228B22">#define dmmggetx_                DMMGGETX</font></strong>
35
 
<a name="line25"> 25: </a><strong><font color="#228B22">#define dmmggetj_                DMMGGETJ</font></strong>
36
 
<a name="line26"> 26: </a><strong><font color="#228B22">#define dmmggetb_                DMMGGETB</font></strong>
37
 
<a name="line27"> 27: </a><strong><font color="#228B22">#define dmmggetsles_             DMMGGETSLES</font></strong>
38
 
<a name="line28"> 28: </a><strong><font color="#228B22">#define dmmggetlevels_           DMMGGETLEVELS</font></strong>
39
 
<a name="line29"> 29: </a><font color="#A020F0">#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)</font>
40
 
<a name="line30"> 30: </a><strong><font color="#228B22">#define dmmggetx_                dmmggetx</font></strong>
41
 
<a name="line31"> 31: </a><strong><font color="#228B22">#define dmmggetj_                dmmggetj</font></strong>
42
 
<a name="line32"> 32: </a><strong><font color="#228B22">#define dmmggetb_                dmmggetb</font></strong>
43
 
<a name="line33"> 33: </a><strong><font color="#228B22">#define dmmggetsles_             dmmggetsles</font></strong>
44
 
<a name="line34"> 34: </a><strong><font color="#228B22">#define dmmggetda_               dmmggetda</font></strong>
45
 
<a name="line35"> 35: </a><strong><font color="#228B22">#define dmmggetlevels_           dmmggetlevels</font></strong>
46
 
<a name="line36"> 36: </a><strong><font color="#228B22">#define dmmgsetsles_             dmmgsetsles</font></strong>
47
 
<a name="line37"> 37: </a><strong><font color="#228B22">#define dmmgdestroy_             dmmgdestroy</font></strong>
48
 
<a name="line38"> 38: </a><strong><font color="#228B22">#define dmmgcreate_              dmmgcreate</font></strong>
49
 
<a name="line39"> 39: </a><strong><font color="#228B22">#define dmmgsetup_               dmmgsetup</font></strong>
50
 
<a name="line40"> 40: </a><strong><font color="#228B22">#define slessetoptionsprefix_    slessetoptionsprefix</font></strong>
51
 
<a name="line41"> 41: </a><strong><font color="#228B22">#define slesappendoptionsprefix_ slesappendoptionsprefix</font></strong>
52
 
<a name="line42"> 42: </a><strong><font color="#228B22">#define slesdestroy_             slesdestroy</font></strong>
53
 
<a name="line43"> 43: </a><strong><font color="#228B22">#define slescreate_              slescreate</font></strong>
54
 
<a name="line44"> 44: </a><strong><font color="#228B22">#define slesgetpc_               slesgetpc</font></strong>
55
 
<a name="line45"> 45: </a><strong><font color="#228B22">#define slesgetksp_              slesgetksp</font></strong>
56
 
<a name="line46"> 46: </a><strong><font color="#228B22">#define slesgetoptionsprefix_    slesgetoptionsprefix</font></strong>
57
 
<a name="line47"> 47: </a><strong><font color="#228B22">#define slesview_                slesview</font></strong>
58
 
<a name="line48"> 48: </a><strong><font color="#228B22">#define dmmgsetdm_               dmmgsetdm</font></strong>
59
 
<a name="line49"> 49: </a><strong><font color="#228B22">#define dmmgview_                dmmgview</font></strong>
60
 
<a name="line50"> 50: </a><strong><font color="#228B22">#define dmmgsolve_               dmmgsolve</font></strong>
61
 
<a name="line51"> 51: </a><font color="#A020F0">#endif</font>
62
 
 
63
 
<a name="line53"> 53: </a><strong><font color="#4169E1"><a name="dmmggetx_"></a>EXTERN_C_BEGIN</font></strong>
64
 
 
65
 
<a name="line55"> 55: </a><strong><font color="#4169E1">void PETSC_STDCALL dmmggetx_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> *x,int *ierr)</font></strong>
66
 
<a name="line56"> 56: </a>{
67
 
<a name="line57"> 57: </a>  *0;
68
 
<a name="line58"> 58: </a>  *x    = <A href="../../../docs/manualpages/DA/DMMGGetx.html#DMMGGetx">DMMGGetx</A>(*dmmg);
69
 
<a name="line59"> 59: </a>}
70
 
 
71
 
<a name="line61"> 61: </a><strong><font color="#4169E1"><a name="dmmggetj_"></a>void PETSC_STDCALL dmmggetj_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A> *x,int *ierr)</font></strong>
 
18
<a name="line8">  8: </a><strong><font color="#228B22">#define dmmgcreate_              DMMGCREATE</font></strong>
 
19
<a name="line9">  9: </a><strong><font color="#228B22">#define dmmgdestroy_             DMMGDESTROY</font></strong>
 
20
<a name="line10"> 10: </a><strong><font color="#228B22">#define dmmgsetup_               DMMGSETUP</font></strong>
 
21
<a name="line11"> 11: </a><strong><font color="#228B22">#define dmmgsetdm_               DMMGSETDM</font></strong>
 
22
<a name="line12"> 12: </a><strong><font color="#228B22">#define dmmgview_                DMMGVIEW</font></strong>
 
23
<a name="line13"> 13: </a><strong><font color="#228B22">#define dmmgsolve_               DMMGSOLVE</font></strong>
 
24
<a name="line14"> 14: </a><strong><font color="#228B22">#define dmmggetda_               DMMGGETDA</font></strong>
 
25
<a name="line15"> 15: </a><strong><font color="#228B22">#define dmmgsetksp_              DMMGSETKSP</font></strong>
 
26
<a name="line16"> 16: </a><strong><font color="#228B22">#define dmmggetx_                DMMGGETX</font></strong>
 
27
<a name="line17"> 17: </a><strong><font color="#228B22">#define dmmggetj_                DMMGGETJ</font></strong>
 
28
<a name="line18"> 18: </a><strong><font color="#228B22">#define dmmggetb_                DMMGGETB</font></strong>
 
29
<a name="line19"> 19: </a><strong><font color="#228B22">#define dmmggetksp_              DMMGGETKSP</font></strong>
 
30
<a name="line20"> 20: </a><strong><font color="#228B22">#define dmmggetlevels_           DMMGGETLEVELS</font></strong>
 
31
<a name="line21"> 21: </a><font color="#A020F0">#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)</font>
 
32
<a name="line22"> 22: </a><strong><font color="#228B22">#define dmmggetx_                dmmggetx</font></strong>
 
33
<a name="line23"> 23: </a><strong><font color="#228B22">#define dmmggetj_                dmmggetj</font></strong>
 
34
<a name="line24"> 24: </a><strong><font color="#228B22">#define dmmggetb_                dmmggetb</font></strong>
 
35
<a name="line25"> 25: </a><strong><font color="#228B22">#define dmmggetksp_              dmmggetksp</font></strong>
 
36
<a name="line26"> 26: </a><strong><font color="#228B22">#define dmmggetda_               dmmggetda</font></strong>
 
37
<a name="line27"> 27: </a><strong><font color="#228B22">#define dmmggetlevels_           dmmggetlevels</font></strong>
 
38
<a name="line28"> 28: </a><strong><font color="#228B22">#define dmmgsetksp_              dmmgsetksp</font></strong>
 
39
<a name="line29"> 29: </a><strong><font color="#228B22">#define dmmgdestroy_             dmmgdestroy</font></strong>
 
40
<a name="line30"> 30: </a><strong><font color="#228B22">#define dmmgcreate_              dmmgcreate</font></strong>
 
41
<a name="line31"> 31: </a><strong><font color="#228B22">#define dmmgsetup_               dmmgsetup</font></strong>
 
42
<a name="line32"> 32: </a><strong><font color="#228B22">#define dmmgsetdm_               dmmgsetdm</font></strong>
 
43
<a name="line33"> 33: </a><strong><font color="#228B22">#define dmmgview_                dmmgview</font></strong>
 
44
<a name="line34"> 34: </a><strong><font color="#228B22">#define dmmgsolve_               dmmgsolve</font></strong>
 
45
<a name="line35"> 35: </a><font color="#A020F0">#endif</font>
 
46
 
 
47
<a name="line37"> 37: </a><strong><font color="#4169E1">EXTERN_C_BEGIN</font></strong>
 
48
<a name="line38"> 38: </a><strong><font color="#4169E1">static int (PETSC_STDCALL *theirmat)(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A>*,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A>*,int*)</font></strong>;
 
49
<a name="line39"> 39: </a><strong><font color="#4169E1"><a name="ourrhs"></a>EXTERN_C_END</font></strong>
 
50
 
 
51
<a name="line41"> 41: </a><strong><font color="#4169E1">static int ourrhs(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> dmmg,<A href="../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> vec)</font></strong>
 
52
<a name="line42"> 42: </a>{
 
53
<a name="line43"> 43: </a>  int              0;
 
54
<a name="line44"> 44: </a>  (*(int (PETSC_STDCALL *)(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A>*,<A href="../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A>*,int*))(((<A href="../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)dmmg-&gt;dm)-&gt;fortran_func_pointers[0]))(&amp;dmmg,&amp;vec,&amp;ierr);
 
55
<a name="line45"> 45: </a>  <font color="#4169E1">return</font> ierr;
 
56
<a name="line46"> 46: </a>}
 
57
 
 
58
<a name="line48"> 48: </a><font color="#B22222">/*</font>
 
59
<a name="line49"> 49: </a><font color="#B22222">   Since <A href="../../../docs/manualpages/KSP/DMMGSetKSP.html#DMMGSetKSP">DMMGSetKSP</A>() immediately calls the matrix functions for each level we do not need to store</font>
 
60
<a name="line50"> 50: </a><font color="#B22222">  the mat() function inside the <A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> object</font>
 
61
<a name="line51"> 51: </a><font color="#B22222">*/</font>
 
62
<a name="line52"> 52: </a><strong><font color="#4169E1"><a name="ourmat"></a>static int ourmat(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> dmmg,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A> mat)</font></strong>
 
63
<a name="line53"> 53: </a>{
 
64
<a name="line54"> 54: </a>  int              0;
 
65
<a name="line55"> 55: </a>  (*theirmat)(&amp;dmmg,&amp;mat,&amp;ierr);
 
66
<a name="line56"> 56: </a>  <font color="#4169E1">return</font> ierr;
 
67
<a name="line57"> 57: </a>}
 
68
 
 
69
<a name="line59"> 59: </a><strong><font color="#4169E1"><a name="dmmggetx_"></a>EXTERN_C_BEGIN</font></strong>
 
70
 
 
71
<a name="line61"> 61: </a><strong><font color="#4169E1">void PETSC_STDCALL dmmggetx_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> *x,int *ierr)</font></strong>
72
72
<a name="line62"> 62: </a>{
73
73
<a name="line63"> 63: </a>  *0;
74
 
<a name="line64"> 64: </a>  *x    = DMMGGetJ(*dmmg);
 
74
<a name="line64"> 64: </a>  *x    = <A href="../../../docs/manualpages/DA/DMMGGetx.html#DMMGGetx">DMMGGetx</A>(*dmmg);
75
75
<a name="line65"> 65: </a>}
76
76
 
77
 
<a name="line67"> 67: </a><strong><font color="#4169E1"><a name="dmmggetB_"></a>void PETSC_STDCALL dmmggetB_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A> *x,int *ierr)</font></strong>
 
77
<a name="line67"> 67: </a><strong><font color="#4169E1"><a name="dmmggetj_"></a>void PETSC_STDCALL dmmggetj_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A> *x,int *ierr)</font></strong>
78
78
<a name="line68"> 68: </a>{
79
79
<a name="line69"> 69: </a>  *0;
80
 
<a name="line70"> 70: </a>  *x    = DMMGGetB(*dmmg);
 
80
<a name="line70"> 70: </a>  *x    = DMMGGetJ(*dmmg);
81
81
<a name="line71"> 71: </a>}
82
82
 
83
 
<a name="line73"> 73: </a><strong><font color="#4169E1"><a name="dmmggetsles_"></a>void PETSC_STDCALL dmmggetsles_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A> *x,int *ierr)</font></strong>
 
83
<a name="line73"> 73: </a><strong><font color="#4169E1"><a name="dmmggetB_"></a>void PETSC_STDCALL dmmggetB_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A> *x,int *ierr)</font></strong>
84
84
<a name="line74"> 74: </a>{
85
85
<a name="line75"> 75: </a>  *0;
86
 
<a name="line76"> 76: </a>  *x    = DMMGGetSLES(*dmmg);
 
86
<a name="line76"> 76: </a>  *x    = DMMGGetB(*dmmg);
87
87
<a name="line77"> 77: </a>}
88
88
 
89
 
<a name="line79"> 79: </a><strong><font color="#4169E1"><a name="dmmggetlevels_"></a>void PETSC_STDCALL dmmggetlevels_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *x,int *ierr)</font></strong>
 
89
<a name="line79"> 79: </a><strong><font color="#4169E1"><a name="dmmggetksp_"></a>void PETSC_STDCALL dmmggetksp_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/KSP/KSP.html#KSP">KSP</A> *x,int *ierr)</font></strong>
90
90
<a name="line80"> 80: </a>{
91
91
<a name="line81"> 81: </a>  *0;
92
 
<a name="line82"> 82: </a>  *x    = DMMGGetLevels(*dmmg);
 
92
<a name="line82"> 82: </a>  *x    = DMMGGetKSP(*dmmg);
93
93
<a name="line83"> 83: </a>}
94
94
 
95
 
<a name="line85"> 85: </a><font color="#B22222">/* ----------------------------------------------------------------------------------------------------------*/</font>
96
 
<a name="line86"> 86: </a><strong><font color="#4169E1"><a name="ourrhs"></a>static int ourrhs(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> dmmg,<A href="../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A> vec)</font></strong>
97
 
<a name="line87"> 87: </a>{
98
 
<a name="line88"> 88: </a>  int              0;
99
 
<a name="line89"> 89: </a>  (*(int (PETSC_STDCALL *)(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A>*,<A href="../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A>*,int*))(((<A href="../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)dmmg-&gt;dm)-&gt;fortran_func_pointers[0]))(&amp;dmmg,&amp;vec,&amp;ierr);
100
 
<a name="line90"> 90: </a>  <font color="#4169E1">return</font> ierr;
101
 
<a name="line91"> 91: </a>}
102
 
 
103
 
<a name="line93"> 93: </a><font color="#B22222">/*</font>
104
 
<a name="line94"> 94: </a><font color="#B22222">   Since <A href="../../../docs/manualpages/SLES/DMMGSetSLES.html#DMMGSetSLES">DMMGSetSLES</A>() immediately calls the matrix functions for each level we do not need to store</font>
105
 
<a name="line95"> 95: </a><font color="#B22222">  the mat() function inside the <A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> object</font>
106
 
<a name="line96"> 96: </a><font color="#B22222">*/</font>
107
 
<a name="line97"> 97: </a><strong><font color="#4169E1">static int (PETSC_STDCALL *theirmat)(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A>*,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A>*,int*)</font></strong>;
108
 
<a name="line98"> 98: </a><strong><font color="#4169E1"><a name="ourmat"></a>static int ourmat(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> dmmg,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A> mat)</font></strong>
109
 
<a name="line99"> 99: </a>{
110
 
<a name="line100">100: </a>  int              0;
111
 
<a name="line101">101: </a>  (*theirmat)(&amp;dmmg,&amp;mat,&amp;ierr);
112
 
<a name="line102">102: </a>  <font color="#4169E1">return</font> ierr;
113
 
<a name="line103">103: </a>}
114
 
 
115
 
<a name="line105">105: </a><strong><font color="#4169E1"><a name="dmmgsetsles_"></a>void PETSC_STDCALL dmmgsetsles_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int (PETSC_STDCALL *rhs)(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A>*,<A href="../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A>*,int*),int (PETSC_STDCALL *mat)(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A>*,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A>*,int*),int *ierr)</font></strong>
116
 
<a name="line106">106: </a>{
117
 
<a name="line107">107: </a>  int i;
118
 
<a name="line108">108: </a>  theirmat = mat;
119
 
<a name="line109">109: </a>  *<A href="../../../docs/manualpages/SLES/DMMGSetSLES.html#DMMGSetSLES">DMMGSetSLES</A>(*dmmg,ourrhs,ourmat);
120
 
<a name="line110">110: </a>  <font color="#B22222">/*</font>
121
 
<a name="line111">111: </a><font color="#B22222">    Save the fortran rhs function in the <A href="../../../docs/manualpages/DA/DM.html#DM">DM</A> on each level; ourrhs() pulls it out when needed</font>
122
 
<a name="line112">112: </a><font color="#B22222">  */</font>
123
 
<a name="line113">113: </a>  <font color="#4169E1">for</font> (i=0; i&lt;(**dmmg)-&gt;nlevels; i++) {
124
 
<a name="line114">114: </a>    ((<A href="../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)(*dmmg)[i]-&gt;dm)-&gt;fortran_func_pointers[0] = (void (*)(void))rhs;
125
 
<a name="line115">115: </a>  }
126
 
<a name="line116">116: </a>}
127
 
 
128
 
<a name="line118">118: </a><font color="#B22222">/* ----------------------------------------------------------------------------------------------------------*/</font>
129
 
 
130
 
<a name="line120">120: </a><strong><font color="#4169E1"><a name="dmmggetda_"></a>void PETSC_STDCALL dmmggetda_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> *dmmg,<A href="../../../docs/manualpages/DA/DA.html#DA">DA</A> *da,int *ierr)</font></strong>
131
 
<a name="line121">121: </a>{
132
 
<a name="line122">122: </a>  *da   = (<A href="../../../docs/manualpages/DA/DA.html#DA">DA</A>)(*dmmg)-&gt;dm;
133
 
<a name="line123">123: </a>  *0;
134
 
<a name="line124">124: </a>}
135
 
 
136
 
<a name="line126">126: </a><strong><font color="#4169E1"><a name="dmmgsetdm_"></a>void PETSC_STDCALL dmmgsetdm_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/DA/DM.html#DM">DM</A> *dm,int *ierr)</font></strong>
137
 
<a name="line127">127: </a>{
138
 
<a name="line128">128: </a>  int i;
139
 
<a name="line129">129: </a>  *<A href="../../../docs/manualpages/SLES/DMMGSetDM.html#DMMGSetDM">DMMGSetDM</A>(*dmmg,*dm);<font color="#4169E1">if</font> (*ierr) <font color="#4169E1">return</font>;
140
 
<a name="line130">130: </a>  <font color="#B22222">/* loop over the levels added a place to hang the function pointers in the <A href="../../../docs/manualpages/DA/DM.html#DM">DM</A> for each level*/</font>
141
 
<a name="line131">131: </a>  <font color="#4169E1">for</font> (i=0; i&lt;(**dmmg)-&gt;nlevels; i++) {
142
 
<a name="line132">132: </a>    *<A href="../../../docs/manualpages/Sys/PetscMalloc.html#PetscMalloc">PetscMalloc</A>(3*<font color="#4169E1">sizeof</font>(void (*)(void)),&amp;((<A href="../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)(*dmmg)[i]-&gt;dm)-&gt;fortran_func_pointers);<font color="#4169E1">if</font> (*ierr) <font color="#4169E1">return</font>;
143
 
<a name="line133">133: </a>  }
144
 
<a name="line134">134: </a>}
145
 
 
146
 
<a name="line136">136: </a><strong><font color="#4169E1"><a name="dmmgview_"></a>void PETSC_STDCALL dmmgview_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/Viewer/PetscViewer.html#PetscViewer">PetscViewer</A> *viewer,int *ierr)</font></strong>
147
 
<a name="line137">137: </a>{
148
 
<a name="line138">138: </a>  *<A href="../../../docs/manualpages/SLES/DMMGView.html#DMMGView">DMMGView</A>(*dmmg,*viewer);
149
 
<a name="line139">139: </a>}
150
 
 
151
 
<a name="line141">141: </a><strong><font color="#4169E1"><a name="dmmgsolve_"></a>void PETSC_STDCALL dmmgsolve_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *ierr)</font></strong>
152
 
<a name="line142">142: </a>{
153
 
<a name="line143">143: </a>  *<A href="../../../docs/manualpages/SLES/DMMGSolve.html#DMMGSolve">DMMGSolve</A>(*dmmg);
154
 
<a name="line144">144: </a>}
155
 
 
156
 
<a name="line146">146: </a><strong><font color="#4169E1"><a name="dmmgcreate_"></a>void PETSC_STDCALL dmmgcreate_(MPI_Comm *<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>,int *nlevels,void *user,<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *ierr)</font></strong>
157
 
<a name="line147">147: </a>{
158
 
<a name="line148">148: </a>  *<A href="../../../docs/manualpages/SLES/DMMGCreate.html#DMMGCreate">DMMGCreate</A>((MPI_Comm)PetscToPointerComm(*<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>),*nlevels,user,dmmg);
159
 
<a name="line149">149: </a>}
160
 
 
161
 
<a name="line151">151: </a><strong><font color="#4169E1"><a name="dmmgdestroy_"></a>void PETSC_STDCALL dmmgdestroy_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *ierr)</font></strong>
162
 
<a name="line152">152: </a>{
163
 
<a name="line153">153: </a>  *<A href="../../../docs/manualpages/SLES/DMMGDestroy.html#DMMGDestroy">DMMGDestroy</A>(*dmmg);
164
 
<a name="line154">154: </a>}
165
 
 
166
 
<a name="line156">156: </a><strong><font color="#4169E1"><a name="dmmgsetup_"></a>void PETSC_STDCALL dmmgsetup_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *ierr)</font></strong>
167
 
<a name="line157">157: </a>{
168
 
<a name="line158">158: </a>  *<A href="../../../docs/manualpages/SLES/DMMGSetUp.html#DMMGSetUp">DMMGSetUp</A>(*dmmg);
169
 
<a name="line159">159: </a>}
170
 
 
171
 
<a name="line161">161: </a><strong><font color="#4169E1"><a name="slesview_"></a>void PETSC_STDCALL slesview_(<A href="../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A> *sles,<A href="../../../docs/manualpages/Viewer/PetscViewer.html#PetscViewer">PetscViewer</A> *viewer, int *ierr)</font></strong>
172
 
<a name="line162">162: </a>{
173
 
<a name="line163">163: </a>  <A href="../../../docs/manualpages/Viewer/PetscViewer.html#PetscViewer">PetscViewer</A> v;
174
 
<a name="line164">164: </a>  PetscPatchDefaultViewers_Fortran(viewer,v);
175
 
<a name="line165">165: </a>  *<A href="../../../docs/manualpages/SLES/SLESView.html#SLESView">SLESView</A>(*sles,v);
176
 
<a name="line166">166: </a>}
177
 
 
178
 
<a name="line168">168: </a><strong><font color="#4169E1"><a name="slessetoptionsprefix_"></a>void PETSC_STDCALL slessetoptionsprefix_(<A href="../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A> *sles,CHAR prefix PETSC_MIXED_LEN(len),</font></strong>
179
 
<a name="line169">169: </a><strong><font color="#4169E1">                                         int *ierr PETSC_END_LEN(len))</font></strong>
180
 
<a name="line170">170: </a>{
181
 
<a name="line171">171: </a>  char *t;
182
 
 
183
 
<a name="line173">173: </a>  FIXCHAR(prefix,len,t);
184
 
<a name="line174">174: </a>  *<A href="../../../docs/manualpages/SLES/SLESSetOptionsPrefix.html#SLESSetOptionsPrefix">SLESSetOptionsPrefix</A>(*sles,t);
185
 
<a name="line175">175: </a>  FREECHAR(prefix,t);
186
 
<a name="line176">176: </a>}
187
 
 
188
 
<a name="line178">178: </a><strong><font color="#4169E1"><a name="slesappendoptionsprefix_"></a>void PETSC_STDCALL slesappendoptionsprefix_(<A href="../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A> *sles,CHAR prefix PETSC_MIXED_LEN(len),</font></strong>
189
 
<a name="line179">179: </a><strong><font color="#4169E1">                                            int *ierr PETSC_END_LEN(len))</font></strong>
190
 
<a name="line180">180: </a>{
191
 
<a name="line181">181: </a>  char *t;
192
 
 
193
 
<a name="line183">183: </a>  FIXCHAR(prefix,len,t);
194
 
<a name="line184">184: </a>  *<A href="../../../docs/manualpages/SLES/SLESAppendOptionsPrefix.html#SLESAppendOptionsPrefix">SLESAppendOptionsPrefix</A>(*sles,t);
195
 
<a name="line185">185: </a>  FREECHAR(prefix,t);
196
 
<a name="line186">186: </a>}
197
 
 
198
 
<a name="line188">188: </a><strong><font color="#4169E1"><a name="slesgetksp_"></a>void PETSC_STDCALL slesgetksp_(<A href="../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A> *sles,<A href="../../../docs/manualpages/KSP/KSP.html#KSP">KSP</A> *ksp,int *ierr)</font></strong>
199
 
<a name="line189">189: </a>{
200
 
<a name="line190">190: </a>  *<A href="../../../docs/manualpages/SLES/SLESGetKSP.html#SLESGetKSP">SLESGetKSP</A>(*sles,ksp);
201
 
<a name="line191">191: </a>}
202
 
 
203
 
<a name="line193">193: </a><strong><font color="#4169E1"><a name="slesgetpc_"></a>void PETSC_STDCALL slesgetpc_(<A href="../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A> *sles,<A href="../../../docs/manualpages/PC/PC.html#PC">PC</A> *pc,int *ierr)</font></strong>
204
 
<a name="line194">194: </a>{
205
 
<a name="line195">195: </a>  *<A href="../../../docs/manualpages/SLES/SLESGetPC.html#SLESGetPC">SLESGetPC</A>(*sles,pc);
206
 
<a name="line196">196: </a>}
207
 
 
208
 
<a name="line198">198: </a><strong><font color="#4169E1"><a name="slesdestroy_"></a>void PETSC_STDCALL slesdestroy_(<A href="../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A> *sles,int *ierr)</font></strong>
209
 
<a name="line199">199: </a>{
210
 
<a name="line200">200: </a>  *<A href="../../../docs/manualpages/SLES/SLESDestroy.html#SLESDestroy">SLESDestroy</A>(*sles);
211
 
<a name="line201">201: </a>}
212
 
 
213
 
<a name="line203">203: </a><strong><font color="#4169E1"><a name="slescreate_"></a>void PETSC_STDCALL slescreate_(MPI_Comm *<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>,<A href="../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A> *outsles,int *ierr)</font></strong>
214
 
<a name="line204">204: </a>{
215
 
<a name="line205">205: </a>  *<A href="../../../docs/manualpages/SLES/SLESCreate.html#SLESCreate">SLESCreate</A>((MPI_Comm)PetscToPointerComm(*<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>),outsles);
216
 
 
217
 
<a name="line207">207: </a>}
218
 
 
219
 
<a name="line209">209: </a><strong><font color="#4169E1"><a name="slesgetoptionsprefix_"></a>void PETSC_STDCALL slesgetoptionsprefix_(<A href="../../../docs/manualpages/SLES/SLES.html#SLES">SLES</A> *sles,CHAR prefix PETSC_MIXED_LEN(len),</font></strong>
220
 
<a name="line210">210: </a><strong><font color="#4169E1">                                         int *ierr PETSC_END_LEN(len))</font></strong>
221
 
<a name="line211">211: </a>{
222
 
<a name="line212">212: </a>  char *tname;
223
 
 
224
 
<a name="line214">214: </a>  *<A href="../../../docs/manualpages/SLES/SLESGetOptionsPrefix.html#SLESGetOptionsPrefix">SLESGetOptionsPrefix</A>(*sles,&amp;tname);
225
 
<a name="line215">215: </a><font color="#A020F0">#if defined(PETSC_USES_CPTOFCD)</font>
226
 
<a name="line216">216: </a>  {
227
 
<a name="line217">217: </a>    char *t = _fcdtocp(prefix); int len1 = _fcdlen(prefix);
228
 
<a name="line218">218: </a>    *<A href="../../../docs/manualpages/Sys/PetscStrncpy.html#PetscStrncpy">PetscStrncpy</A>(t,tname,len1);
229
 
<a name="line219">219: </a>  }
230
 
<a name="line220">220: </a><font color="#A020F0">#else</font>
231
 
<a name="line221">221: </a>  *<A href="../../../docs/manualpages/Sys/PetscStrncpy.html#PetscStrncpy">PetscStrncpy</A>(prefix,tname,len);
232
 
<a name="line222">222: </a><font color="#A020F0">#endif</font>
233
 
<a name="line223">223: </a>}
234
 
 
235
 
<a name="line225">225: </a>EXTERN_C_END
 
95
<a name="line85"> 85: </a><strong><font color="#4169E1"><a name="dmmggetlevels_"></a>void PETSC_STDCALL dmmggetlevels_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *x,int *ierr)</font></strong>
 
96
<a name="line86"> 86: </a>{
 
97
<a name="line87"> 87: </a>  *0;
 
98
<a name="line88"> 88: </a>  *x    = DMMGGetLevels(*dmmg);
 
99
<a name="line89"> 89: </a>}
 
100
 
 
101
<a name="line91"> 91: </a><font color="#B22222">/* ----------------------------------------------------------------------------------------------------------*/</font>
 
102
 
 
103
<a name="line93"> 93: </a><strong><font color="#4169E1"><a name="dmmgsetksp_"></a>void PETSC_STDCALL dmmgsetksp_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int (PETSC_STDCALL *rhs)(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A>*,<A href="../../../docs/manualpages/Vec/Vec.html#Vec">Vec</A>*,int*),int (PETSC_STDCALL *mat)(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A>*,<A href="../../../docs/manualpages/Mat/Mat.html#Mat">Mat</A>*,int*),int *ierr)</font></strong>
 
104
<a name="line94"> 94: </a>{
 
105
<a name="line95"> 95: </a>  int i;
 
106
<a name="line96"> 96: </a>  theirmat = mat;
 
107
<a name="line97"> 97: </a>  *<A href="../../../docs/manualpages/KSP/DMMGSetKSP.html#DMMGSetKSP">DMMGSetKSP</A>(*dmmg,ourrhs,ourmat);
 
108
<a name="line98"> 98: </a>  <font color="#B22222">/*</font>
 
109
<a name="line99"> 99: </a><font color="#B22222">    Save the fortran rhs function in the <A href="../../../docs/manualpages/DA/DM.html#DM">DM</A> on each level; ourrhs() pulls it out when needed</font>
 
110
<a name="line100">100: </a><font color="#B22222">  */</font>
 
111
<a name="line101">101: </a>  <font color="#4169E1">for</font> (i=0; i&lt;(**dmmg)-&gt;nlevels; i++) {
 
112
<a name="line102">102: </a>    ((<A href="../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)(*dmmg)[i]-&gt;dm)-&gt;fortran_func_pointers[0] = (FCNVOID)rhs;
 
113
<a name="line103">103: </a>  }
 
114
<a name="line104">104: </a>}
 
115
 
 
116
<a name="line106">106: </a><font color="#B22222">/* ----------------------------------------------------------------------------------------------------------*/</font>
 
117
 
 
118
<a name="line108">108: </a><strong><font color="#4169E1"><a name="dmmggetda_"></a>void PETSC_STDCALL dmmggetda_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> *dmmg,<A href="../../../docs/manualpages/DA/DA.html#DA">DA</A> *da,int *ierr)</font></strong>
 
119
<a name="line109">109: </a>{
 
120
<a name="line110">110: </a>  *da   = (<A href="../../../docs/manualpages/DA/DA.html#DA">DA</A>)(*dmmg)-&gt;dm;
 
121
<a name="line111">111: </a>  *0;
 
122
<a name="line112">112: </a>}
 
123
 
 
124
<a name="line114">114: </a><strong><font color="#4169E1"><a name="dmmgsetdm_"></a>void PETSC_STDCALL dmmgsetdm_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/DA/DM.html#DM">DM</A> *dm,int *ierr)</font></strong>
 
125
<a name="line115">115: </a>{
 
126
<a name="line116">116: </a>  int i;
 
127
<a name="line117">117: </a>  *<A href="../../../docs/manualpages/KSP/DMMGSetDM.html#DMMGSetDM">DMMGSetDM</A>(*dmmg,*dm);<font color="#4169E1">if</font> (*ierr) <font color="#4169E1">return</font>;
 
128
<a name="line118">118: </a>  <font color="#B22222">/* loop over the levels added a place to hang the function pointers in the <A href="../../../docs/manualpages/DA/DM.html#DM">DM</A> for each level*/</font>
 
129
<a name="line119">119: </a>  <font color="#4169E1">for</font> (i=0; i&lt;(**dmmg)-&gt;nlevels; i++) {
 
130
<a name="line120">120: </a>    *<A href="../../../docs/manualpages/Sys/PetscMalloc.html#PetscMalloc">PetscMalloc</A>(3*<font color="#4169E1">sizeof</font>(FCNVOID),&amp;((<A href="../../../docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</A>)(*dmmg)[i]-&gt;dm)-&gt;fortran_func_pointers);<font color="#4169E1">if</font> (*ierr) <font color="#4169E1">return</font>;
 
131
<a name="line121">121: </a>  }
 
132
<a name="line122">122: </a>}
 
133
 
 
134
<a name="line124">124: </a><strong><font color="#4169E1"><a name="dmmgview_"></a>void PETSC_STDCALL dmmgview_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,<A href="../../../docs/manualpages/Viewer/PetscViewer.html#PetscViewer">PetscViewer</A> *viewer,int *ierr)</font></strong>
 
135
<a name="line125">125: </a>{
 
136
<a name="line126">126: </a>  *<A href="../../../docs/manualpages/KSP/DMMGView.html#DMMGView">DMMGView</A>(*dmmg,*viewer);
 
137
<a name="line127">127: </a>}
 
138
 
 
139
<a name="line129">129: </a><strong><font color="#4169E1"><a name="dmmgsolve_"></a>void PETSC_STDCALL dmmgsolve_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *ierr)</font></strong>
 
140
<a name="line130">130: </a>{
 
141
<a name="line131">131: </a>  *<A href="../../../docs/manualpages/KSP/DMMGSolve.html#DMMGSolve">DMMGSolve</A>(*dmmg);
 
142
<a name="line132">132: </a>}
 
143
 
 
144
<a name="line134">134: </a><strong><font color="#4169E1"><a name="dmmgcreate_"></a>void PETSC_STDCALL dmmgcreate_(<A href="../../../docs/manualpages/Sys/MPI_Comm.html#MPI_Comm">MPI_Comm</A> *<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>,int *nlevels,void *user,<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *ierr)</font></strong>
 
145
<a name="line135">135: </a>{
 
146
<a name="line136">136: </a>  *<A href="../../../docs/manualpages/KSP/DMMGCreate.html#DMMGCreate">DMMGCreate</A>((<A href="../../../docs/manualpages/Sys/MPI_Comm.html#MPI_Comm">MPI_Comm</A>)PetscToPointerComm(*<A href="../../../docs/manualpages/Sys/comm.html#comm">comm</A>),*nlevels,user,dmmg);
 
147
<a name="line137">137: </a>}
 
148
 
 
149
<a name="line139">139: </a><strong><font color="#4169E1"><a name="dmmgdestroy_"></a>void PETSC_STDCALL dmmgdestroy_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *ierr)</font></strong>
 
150
<a name="line140">140: </a>{
 
151
<a name="line141">141: </a>  *<A href="../../../docs/manualpages/KSP/DMMGDestroy.html#DMMGDestroy">DMMGDestroy</A>(*dmmg);
 
152
<a name="line142">142: </a>}
 
153
 
 
154
<a name="line144">144: </a><strong><font color="#4169E1"><a name="dmmgsetup_"></a>void PETSC_STDCALL dmmgsetup_(<A href="../../../docs/manualpages/DA/DMMG.html#DMMG">DMMG</A> **dmmg,int *ierr)</font></strong>
 
155
<a name="line145">145: </a>{
 
156
<a name="line146">146: </a>  *<A href="../../../docs/manualpages/KSP/DMMGSetUp.html#DMMGSetUp">DMMGSetUp</A>(*dmmg);
 
157
<a name="line147">147: </a>}
 
158
 
 
159
<a name="line149">149: </a>EXTERN_C_END
236
160
 
237
161
 
238
162
</pre>