2
/*******************************************************
4
* Copyright (c) 2003-2010 by University of Queensland
5
* Earth Systems Science Computational Center (ESSCC)
6
* http://www.uq.edu.au/esscc
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
12
*******************************************************/
14
/**************************************************************/
16
/* Dudley: Mesh: NodeFile */
18
/* copies the array newX into self->coordinates */
20
/**************************************************************/
25
/**************************************************************/
27
void Dudley_NodeFile_setCoordinates(Dudley_NodeFile * self, escriptDataC * newX)
29
char error_msg[LenErrorMsg_MAX];
32
if (getDataPointSize(newX) != self->numDim)
34
sprintf(error_msg, "Dudley_NodeFile_setCoordinates: dimension of new coordinates has to be %d.", self->numDim);
35
Dudley_setError(VALUE_ERROR, error_msg);
37
else if (!numSamplesEqual(newX, 1, self->numNodes))
39
sprintf(error_msg, "Dudley_NodeFile_setCoordinates: number of given nodes must to be %d.", self->numNodes);
40
Dudley_setError(VALUE_ERROR, error_msg);
44
numDim_size = self->numDim * sizeof(double);
45
Dudley_increaseStatus(self);
46
#pragma omp parallel private(n)
49
#pragma omp for schedule(static)
50
for (n = 0; n < self->numNodes; n++)
52
memcpy(&(self->Coordinates[INDEX2(0, n, self->numDim)]), getSampleDataROFast(newX, n), numDim_size);