/[escript]/trunk/dudley/src/ElementFile_setTags.cpp
ViewVC logotype

Annotation of /trunk/dudley/src/ElementFile_setTags.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3259 - (hide annotations)
Mon Oct 11 01:48:14 2010 UTC (8 years, 11 months ago) by jfenwick
Original Path: trunk/dudley/src/ElementFile_setTags.c
File MIME type: text/plain
File size: 2181 byte(s)
Merging dudley and scons updates from branches

1 gross 767
2 ksteube 1312 /*******************************************************
3 ksteube 1811 *
4 jfenwick 2881 * Copyright (c) 2003-2010 by University of Queensland
5 ksteube 1811 * Earth Systems Science Computational Center (ESSCC)
6     * http://www.uq.edu.au/esscc
7     *
8     * Primary Business: Queensland, Australia
9     * Licensed under the Open Software License version 3.0
10     * http://www.opensource.org/licenses/osl-3.0.php
11     *
12     *******************************************************/
13 ksteube 1312
14 gross 767 /**************************************************************/
15    
16 jfenwick 3086 /* Dudley: Mesh: ElementFile */
17 gross 767
18 gross 2748 /* set tags to newTag where mask>0 */
19 gross 767
20     /**************************************************************/
21    
22     #include "ElementFile.h"
23     #include "Util.h"
24 gross 1062 #include "Assemble.h"
25 gross 767
26     /**************************************************************/
27    
28 jfenwick 3224 void Dudley_ElementFile_setTags(Dudley_ElementFile * self, const int newTag, escriptDataC * mask)
29     {
30     register dim_t n, q;
31     dim_t numElements, numQuad;
32     register __const double *mask_array;
33     register bool_t check;
34     Dudley_resetError();
35     if (self == NULL)
36     return;
37     numElements = self->numElements;
38 gross 767
39 jfenwick 3224 numQuad = Dudley_Assemble_reducedIntegrationOrder(mask) ? 1 : (self->numDim + 1);
40     if (1 != getDataPointSize(mask))
41     {
42     Dudley_setError(TYPE_ERROR, "Dudley_ElementFile_setTags: number of components of mask is 1.");
43     }
44     else if (!numSamplesEqual(mask, numQuad, numElements))
45     {
46     Dudley_setError(TYPE_ERROR, "Dudley_ElementFile_setTags: illegal number of samples of mask Data object");
47     }
48 gross 767
49 jfenwick 3224 /* now we can start */
50 gross 767
51 jfenwick 3224 if (Dudley_noError())
52     {
53     if (isExpanded(mask))
54     {
55     #pragma omp parallel private(n,check,mask_array)
56     {
57     #pragma omp for schedule(static)
58     for (n = 0; n < numElements; n++)
59     {
60     mask_array = getSampleDataRO(mask, n);
61     if (mask_array[0] > 0)
62     self->Tag[n] = newTag;
63 gross 2748 }
64 jfenwick 3224 }
65 gross 2748 }
66 jfenwick 3224 else
67     {
68     #pragma omp parallel private(q,n,check,mask_array)
69     {
70     #pragma omp for schedule(static)
71     for (n = 0; n < numElements; n++)
72     {
73     mask_array = getSampleDataRO(mask, n);
74     check = FALSE;
75     for (q = 0; q < numQuad; q++)
76     check = check || mask_array[q];
77     if (check)
78     self->Tag[n] = newTag;
79     }
80     }
81     }
82     Dudley_ElementFile_setTagsInUse(self);
83     }
84 gross 767 }

  ViewVC Help
Powered by ViewVC 1.1.26