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

Last change on this file since 4156 was 4156, checked in by Mathieu Morlighem, 15 years ago

ProcessParams is not used anymore
numbrofvertices and numberofnodes are not anymore in parameters

File size: 1.8 KB
RevLine 
[3372]1/*!\file FieldAverageOntoVerticesx
2 * \brief: average field throfieldh thickness
3 */
4
5#include "./FieldAverageOntoVerticesx.h"
6
[3913]7#include "../../shared/shared.h"
8#include "../../include/include.h"
9#include "../../toolkits/toolkits.h"
10#include "../../EnumDefinitions/EnumDefinitions.h"
[3372]11
[3673]12void FieldAverageOntoVerticesx(Vec* pfield, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters){
[3372]13
[3556]14 /*Intermediary*/
[3969]15 int i;
[3556]16 int numberofvertices,found;
17 Vec connectivity=NULL;
18 Vec fieldsum=NULL;
[3372]19 double* field_serial=NULL;
[3969]20 Node* node=NULL;
[3372]21
[3556]22 /*Output*/
23 Vec field=NULL;
24
[3869]25 /*Initialize intermediary*/
[4156]26 vertices->NumberOfVertices(&numberofvertices);
[3556]27 connectivity=NewVec(numberofvertices);
28 fieldsum =NewVec(numberofvertices);
29
[3372]30 /*First, get elements and nodes configured: */
[3446]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);
[3372]34
35 /*Serialize field: */
[3556]36 VecToMPISerial(&field_serial,*pfield);
[3372]37
[3556]38 /*Compute summ of connectivity and summ of values: */
[3969]39 for (i=0;i<nodes->Size();i++){
40 node=(Node*)nodes->GetObjectByOffset(i);
41 node->FieldAverageOntoVertices(fieldsum,connectivity,field_serial);
42 }
[3372]43
[3556]44 /*Assemble vectors: */
45 VecAssemblyBegin(connectivity);
46 VecAssemblyEnd(connectivity);
47 VecAssemblyBegin(fieldsum);
48 VecAssemblyEnd(fieldsum);
[3372]49
[3556]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
[3372]60 /*Free ressources:*/
61 xfree((void**)&field_serial);
[3556]62 VecFree(&connectivity);
63 VecFree(&fieldsum);
[3372]64
65}
Note: See TracBrowser for help on using the repository browser.