source: issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp@ 3913

Last change on this file since 3913 was 3913, checked in by Eric.Larour, 15 years ago

Moved all objects in Bamg to objects directory.
Moved all solutions from parallel to solutoins.
Moved all modules from top c/ directory to c/modules directory
cleaned up all object dependencies in Bamg/objects (fiouh!)
That will do for the week-end:)

File size: 1.7 KB
Line 
1/*!\file FieldAverageOntoVerticesx
2 * \brief: average field throfieldh thickness
3 */
4
5#include "./FieldAverageOntoVerticesx.h"
6
7#include "../../shared/shared.h"
8#include "../../include/include.h"
9#include "../../toolkits/toolkits.h"
10#include "../../EnumDefinitions/EnumDefinitions.h"
11
12void FieldAverageOntoVerticesx(Vec* pfield, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters){
13
14 extern int my_rank;
15
16 /*Intermediary*/
17 int numberofvertices,found;
18 Vec connectivity=NULL;
19 Vec fieldsum=NULL;
20 double* field_serial=NULL;
21
22 /*Output*/
23 Vec field=NULL;
24
25 /*Initialize intermediary*/
26 found=parameters->FindParam(&numberofvertices,NumberOfVerticesEnum);
27 connectivity=NewVec(numberofvertices);
28 fieldsum =NewVec(numberofvertices);
29
30 /*First, get elements and nodes configured: */
31 elements->Configure(elements,loads, nodes,vertices, materials,parameters);
32 nodes->Configure(elements,loads, nodes,vertices, materials,parameters);
33 parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
34
35 /*Serialize field: */
36 VecToMPISerial(&field_serial,*pfield);
37
38 /*Compute summ of connectivity and summ of values: */
39 nodes->FieldAverageOntoVertices(fieldsum,connectivity,field_serial);
40
41 /*Assemble vectors: */
42 VecAssemblyBegin(connectivity);
43 VecAssemblyEnd(connectivity);
44 VecAssemblyBegin(fieldsum);
45 VecAssemblyEnd(fieldsum);
46
47 /*Initialize output*/
48 field=NewVec(numberofvertices);
49
50 /*Create Field = Fieldsum./connectivity */
51 VecPointwiseDivide(field,fieldsum,connectivity);
52
53 /*Assign output pointer*/
54 VecFree(pfield);
55 *pfield=field;
56
57 /*Free ressources:*/
58 xfree((void**)&field_serial);
59 VecFree(&connectivity);
60 VecFree(&fieldsum);
61
62}
Note: See TracBrowser for help on using the repository browser.