Ice Sheet System Model  4.18
Code documentation
Functions
Reducevectorgtofx.cpp File Reference
#include "./Reducevectorgtofx.h"

Go to the source code of this file.

Functions

void Reducevectorgtofx (Vector< IssmDouble > **puf, Vector< IssmDouble > *ug, Nodes *nodes, Parameters *parameters)
 

Function Documentation

◆ Reducevectorgtofx()

void Reducevectorgtofx ( Vector< IssmDouble > **  puf,
Vector< IssmDouble > *  ug,
Nodes nodes,
Parameters parameters 
)

Definition at line 8 of file Reducevectorgtofx.cpp.

8  {
9 
10  if(VerboseModule()) _printf0_(" Reduce vector from g to f set\n");
11 
12  /*first figure out fsize: */
13  int fsize=nodes->NumberOfDofs(FsetEnum);
14  int flocalsize = nodes->NumberOfDofsLocal(FsetEnum);
15 
16  /*If fsize is 0, return NULL vector*/
17  if(fsize==0){
18  *puf=NULL;
19  return;
20  }
21 
22  /*Get local vectors ug*/
23  int *indices_ug = NULL;
24  IssmDouble *local_ug = NULL;
25  ug->GetLocalVector(&local_ug,&indices_ug);
26 
27  /*Allocate output*/
28  Vector<IssmDouble>* uf=new Vector<IssmDouble>(flocalsize,fsize);
29 
30  /*Let nodes figure it out*/
31  for(int i=0;i<nodes->Size();i++){
32  Node* node=(Node*)nodes->GetObjectByOffset(i);
33  node->VecReduce(uf,local_ug,indices_ug);
34  }
35 
36  /*Assemble vector: */
37  uf->Assemble();
38 
39  /*Cleanup and assing output pointer*/
40  xDelete<int>(indices_ug);
41  xDelete<IssmDouble>(local_ug);
42  *puf=uf;
43 }
DataSet::Size
int Size()
Definition: DataSet.cpp:399
IssmDouble
double IssmDouble
Definition: types.h:37
_printf0_
#define _printf0_(StreamArgs)
Definition: Print.h:29
Vector::GetLocalVector
void GetLocalVector(doubletype **pvector, int **pindices)
Definition: Vector.h:219
VerboseModule
bool VerboseModule(void)
Definition: Verbosity.cpp:23
Nodes::NumberOfDofsLocal
int NumberOfDofsLocal(int setenum)
Definition: Nodes.cpp:326
Node::VecReduce
void VecReduce(Vector< IssmDouble > *uf, IssmDouble *local_ug, int *indices_ug)
Definition: Node.cpp:875
Vector::Assemble
void Assemble(void)
Definition: Vector.h:142
Node
Definition: Node.h:23
DataSet::GetObjectByOffset
Object * GetObjectByOffset(int offset)
Definition: DataSet.cpp:334
FsetEnum
@ FsetEnum
Definition: EnumDefinitions.h:1075
Nodes::NumberOfDofs
int NumberOfDofs(int setenum)
Definition: Nodes.cpp:314
Vector< IssmDouble >