source: issm/trunk/src/c/modules/Dux/Dux.cpp@ 4573

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

Optimized configuration. Only needed in series, or in parallel when resetting
configuration in SetConfiguration in FemModel.
Still more to optimize, but this takes a lot of code away.

File size: 1.3 KB
RevLine 
[1]1/*!\file Dux
2 * \brief: diff between observed and modeled velocity
3 */
4
5#include "./Dux.h"
6
[3913]7#include "../../shared/shared.h"
8#include "../../include/include.h"
9#include "../../toolkits/toolkits.h"
10#include "../../EnumDefinitions/EnumDefinitions.h"
[3180]11#include "../SurfaceAreax/SurfaceAreax.h"
[1]12
[4218]13void Dux( Vec* pdu_g, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters){
[1]14
[3180]15 /*Intermediary*/
[1]16 int i;
17 int gsize;
18 int found;
[3180]19 double fit=-1;
20 double S;
[3967]21 Element* element=NULL;
[1]22
[4043]23 int analysis_type;
24
[1]25 /*output: */
26 Vec du_g=NULL;
27
[4043]28 /*retrive parameters: */
29 parameters->FindParam(&analysis_type,AnalysisTypeEnum);
30
[3673]31 /*Compute surface area: */
[4043]32 SurfaceAreax(&S,elements,nodes,vertices, loads,materials,parameters);
[3180]33
[3673]34 /*add surface area to elements :*/
[4091]35 for(i=0;i<elements->Size();i++){
36 Element* element=(Element*)elements->GetObjectByOffset(i);
37 element->InputUpdateFromVector(&S,SurfaceAreaEnum,ConstantEnum);
38 }
[3673]39
[1]40 /*Get size of matrix: */
[4034]41 gsize=nodes->NumberOfDofs(analysis_type);
[1]42
43 /*Allocate du_g: */
44 du_g=NewVec(gsize);
45
46 /*Compute velocity difference: */
[3967]47 for (i=0;i<elements->Size();i++){
48 element=(Element*)elements->GetObjectByOffset(i);
[4043]49 element->Du(du_g);
[3967]50 }
[1]51
52 /*Assemble vector: */
53 VecAssemblyBegin(du_g);
54 VecAssemblyEnd(du_g);
55
56 /*Assign output pointers: */
57 *pdu_g=du_g;
58
59}
Note: See TracBrowser for help on using the repository browser.