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

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

New Nodes class

File size: 1.8 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,Nodes* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters){
13
14 /*Intermediary*/
15 int i;
16 int numberofvertices,found;
17 Vec connectivity=NULL;
18 Vec fieldsum=NULL;
19 double* field_serial=NULL;
20 Node* node=NULL;
21
22 /*Output*/
23 Vec field=NULL;
24
25 /*Initialize intermediary*/
26 numberofvertices=vertices->NumberOfVertices();
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 for (i=0;i<nodes->Size();i++){
40 node=(Node*)nodes->GetObjectByOffset(i);
41 node->FieldAverageOntoVertices(fieldsum,connectivity,field_serial);
42 }
43
44 /*Assemble vectors: */
45 VecAssemblyBegin(connectivity);
46 VecAssemblyEnd(connectivity);
47 VecAssemblyBegin(fieldsum);
48 VecAssemblyEnd(fieldsum);
49
50 /*Initialize output*/
51 field=NewVec(numberofvertices);
52
53 /*Create Field = Fieldsum./connectivity */
54 VecPointwiseDivide(field,fieldsum,connectivity);
55
56 /*Assign output pointer*/
57 VecFree(pfield);
58 *pfield=field;
59
60 /*Free ressources:*/
61 xfree((void**)&field_serial);
62 VecFree(&connectivity);
63 VecFree(&fieldsum);
64
65}
Note: See TracBrowser for help on using the repository browser.