Epetra Package Browser (Single Doxygen Collection)
Development
Loading...
Searching...
No Matches
example
C_wrappers
example/C_wrappers/c_main.c
Go to the documentation of this file.
1
/*
2
//@HEADER
3
// ************************************************************************
4
//
5
// Epetra: Linear Algebra Services Package
6
// Copyright 2011 Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39
//
40
// ************************************************************************
41
//@HEADER
42
*/
43
44
#ifdef EPETRA_MPI
45
#include <mpi.h>
46
#endif
47
#include "
Epetra_C_wrappers.h
"
48
49
int
main
(
int
argc,
char
*argv[]) {
50
int
i;
51
EPETRA_OBJECT_PTR
Comm, Map, X, Y;
52
int
MyPID, NumProc;
53
int
NumGlobalElements;
54
int
NumMyElements;
55
56
#ifdef EPETRA_MPI
57
/* Initialize MPI */
58
MPI_Init(&argc,&argv);
59
Comm =
epetra_mpicomm_create2
( MPI_COMM_WORLD );
60
#else
61
Comm =
epetra_serialcomm_create
();
62
#endif
63
64
MyPID =
epetra_comm_mypid
(Comm);
65
NumProc =
epetra_comm_numproc
(Comm);
66
67
68
/* Construct a Map that puts 2 elements on each PE */
69
70
NumGlobalElements = 2*NumProc;
71
Map =
epetra_map_create1
(NumGlobalElements, 0, Comm);
72
73
74
X =
epetra_vector_create1
(Map);
75
Y =
epetra_vector_create1
(Map);
76
77
epetra_vector_random
(X);
78
epetra_vector_random
(Y);
79
printf(
"Contents of X vector\n"
);
80
epetra_vector_print
(X);
81
82
83
printf(
"Contents of Y vector\n"
);
84
epetra_vector_print
(Y);
85
86
/* Add X and Y (need to pass Y twice for now, since this is the only update
87
interface wrapped by C at this time) */
88
epetra_vector_update
(X, 1.0, Y, 0.0, Y, 1.0);
89
90
printf(
"Sum of X and Y vectors\n"
);
91
epetra_vector_print
(X);
92
93
epetra_vector_destroy
(X);
94
epetra_vector_destroy
(Y);
95
epetra_map_destroy
(Map);
96
epetra_comm_destroy
(Comm);
97
98
#ifdef EPETRA_MPI
99
MPI_Finalize() ;
100
#endif
101
102
/* end main
103
*/
104
return
0 ;
105
}
epetra_map_create1
EPETRA_OBJECT_PTR MANGLE epetra_map_create1(EPETRA_INT numGlobalElements, EPETRA_INT indexBase, EPETRA_OBJECT_REF comm)
Epetra_Map
Definition
Epetra_C_wrappers.cpp:111
epetra_serialcomm_create
EPETRA_OBJECT_PTR MANGLE epetra_serialcomm_create()
Definition
Epetra_C_wrappers.cpp:80
epetra_vector_update
int MANGLE epetra_vector_update(EPETRA_OBJECT_REF x, EPETRA_DOUBLE scalara, EPETRA_OBJECT_REF a, EPETRA_DOUBLE scalarb, EPETRA_OBJECT_REF b, EPETRA_DOUBLE scalarx)
Definition
Epetra_C_wrappers.cpp:246
epetra_comm_mypid
int MANGLE epetra_comm_mypid(EPETRA_OBJECT_REF comm)
Definition
Epetra_C_wrappers.cpp:85
epetra_comm_numproc
int MANGLE epetra_comm_numproc(EPETRA_OBJECT_REF comm)
Definition
Epetra_C_wrappers.cpp:90
epetra_vector_print
void MANGLE epetra_vector_print(EPETRA_OBJECT_REF x)
Definition
Epetra_C_wrappers.cpp:254
epetra_vector_create1
EPETRA_OBJECT_PTR MANGLE epetra_vector_create1(EPETRA_OBJECT_REF map)
Epetra_Vector
Definition
Epetra_C_wrappers.cpp:211
epetra_comm_destroy
void MANGLE epetra_comm_destroy(EPETRA_OBJECT_REF comm)
Definition
Epetra_C_wrappers.cpp:102
epetra_vector_random
int MANGLE epetra_vector_random(EPETRA_OBJECT_REF x)
Definition
Epetra_C_wrappers.cpp:241
epetra_map_destroy
void MANGLE epetra_map_destroy(EPETRA_OBJECT_REF map)
Definition
Epetra_C_wrappers.cpp:202
epetra_vector_destroy
void MANGLE epetra_vector_destroy(EPETRA_OBJECT_REF x)
Definition
Epetra_C_wrappers.cpp:258
epetra_mpicomm_create2
EPETRA_OBJECT_PTR MANGLE epetra_mpicomm_create2(MPI_Comm *comm)
Definition
Epetra_C_wrappers.cpp:74
Epetra_C_wrappers.h
EPETRA_OBJECT_PTR
void * EPETRA_OBJECT_PTR
Definition
Epetra_C_wrappers.h:76
main
int main(int argc, char *argv[])
Definition
example/C_wrappers/c_main.c:49
Generated by
1.10.0