/[escript]/branches/trilinos_from_5897/dudley/src/Assemble_PDE_Points.cpp
ViewVC logotype

Contents of /branches/trilinos_from_5897/dudley/src/Assemble_PDE_Points.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6079 - (show annotations)
Mon Mar 21 12:22:38 2016 UTC (2 years, 11 months ago) by caltinay
File size: 2688 byte(s)
Big commit - making dudley much more like finley to make it more
managable. Fixed quite a few issues that had been fixed in finley.
Disposed of all ReducedNode/ReducedDOF entities that dudley never supported.
Compiles and passes tests.

1
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2016 by The University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Open Software License version 3.0
9 * http://www.opensource.org/licenses/osl-3.0.php
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development 2012-2013 by School of Earth Sciences
13 * Development from 2014 by Centre for Geoscience Computing (GeoComp)
14 *
15 *****************************************************************************/
16
17
18 /****************************************************************************
19
20 Assembles the system of numEqu PDEs into the stiffness matrix S right hand
21 side F
22
23 d_dirac_{k,m} u_m and y_dirac_k
24
25 u has p.numComp components in a 3D domain.
26 The shape functions for test and solution must be identical and
27 row_NS == row_NN.
28
29 Shape of the coefficients:
30
31 d_dirac = p.numEqu x p.numComp
32 y_dirac = p.numEqu
33
34
35 *****************************************************************************/
36
37 #include "Assemble.h"
38 #include "Util.h"
39
40 namespace dudley {
41
42 void Assemble_PDE_Points(const AssembleParameters& p,
43 const ElementFile* elements,
44 escript::ASM_ptr mat, escript::Data& F,
45 const escript::Data& d_dirac,
46 const escript::Data& y_dirac)
47 {
48 double* F_p = NULL;
49 if (!F.isEmpty()) {
50 F.requireWrite();
51 F_p = F.getSampleDataRW(0);
52 }
53
54 #pragma omp parallel
55 {
56 for (int color=elements->minColor;color<=elements->maxColor;color++) {
57 // loop over all elements
58 #pragma omp for
59 for(index_t e=0; e<elements->numElements; e++) {
60 if (elements->Color[e]==color) {
61 const index_t row_index=p.row_DOF[elements->Nodes[INDEX2(0,e,p.NN)]];
62 if (!y_dirac.isEmpty()) {
63 const double* y_dirac_p=y_dirac.getSampleDataRO(e);
64 util::addScatter(1, &row_index, p.numEqu,
65 y_dirac_p, F_p, p.row_DOF_UpperBound);
66 }
67
68 if (!d_dirac.isEmpty()) {
69 const double* d_dirac_p=d_dirac.getSampleDataRO(e);
70 Assemble_addToSystemMatrix(mat, 1, &row_index,
71 p.numEqu, 1, &row_index, p.numComp, d_dirac_p);
72 }
73 } // end color check
74 } // end element loop
75 } // end color loop
76 } // end parallel region
77 }
78
79 } // namespace dudley
80

Properties

Name Value
svn:mergeinfo /branches/4.0fordebian/dudley/src/Assemble_PDE_Points.cpp:5567-5588 /branches/lapack2681/finley/src/Assemble_PDE_Points.cpp:2682-2741 /branches/pasowrap/dudley/src/Assemble_PDE_Points.cpp:3661-3674 /branches/py3_attempt2/dudley/src/Assemble_PDE_Points.cpp:3871-3891 /branches/restext/finley/src/Assemble_PDE_Points.cpp:2610-2624 /branches/ripleygmg_from_3668/dudley/src/Assemble_PDE_Points.cpp:3669-3791 /branches/stage3.0/finley/src/Assemble_PDE_Points.cpp:2569-2590 /branches/symbolic_from_3470/dudley/src/Assemble_PDE_Points.cpp:3471-3974 /branches/symbolic_from_3470/ripley/test/python/dudley/src/Assemble_PDE_Points.cpp:3517-3974 /release/3.0/finley/src/Assemble_PDE_Points.cpp:2591-2601 /release/4.0/dudley/src/Assemble_PDE_Points.cpp:5380-5406 /trunk/dudley/src/Assemble_PDE_Points.cpp:4257-4344,5898-6007 /trunk/ripley/test/python/dudley/src/Assemble_PDE_Points.cpp:3480-3515

  ViewVC Help
Powered by ViewVC 1.1.26