/*!\file InputConvergencex */ #include "./InputConvergencex.h" #include "../../shared/shared.h" #include "../../include/include.h" #include "../../toolkits/toolkits.h" #include "../../EnumDefinitions/EnumDefinitions.h" int InputConvergencex(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int enums, int num_enums, int criterionenums, double* criterionvalues,int num_criterionenums){ /*intermediary:*/ int i; int converged = 1; int node_converged=1; double *eps = NULL; extern int my_rank; int rank_allowed; /*First, configure our datasets: */ elements->Configure(elements,loads, nodes,vertices, materials,parameters); nodes-> Configure(elements,loads, nodes,vertices, materials,parameters); loads-> Configure(elements, loads, nodes,vertices, materials,parameters); parameters->Configure(elements,loads, nodes,vertices, materials,parameters); /*allocate dynamic memory: */ eps=(double*)xmalloc(num_criterionenums*sizeof(double)); /*Go through elements, and ask them to do the job: */ for(i=0;iSize();i++){ Element* element=(Element*)elements->GetObjectByOffset(i); element->InputConvergence(&converged,eps,enums,num_enums,criterionenums,criterionvalues,num_criterionenums); if(!converged)break; } if(!converged){ /*get convergence information to user: */ if(verbose>2)rank_allowed=my_rank; else rank_allowed=0; if(my_rank==rank_allowed){ printf("%s%i%s"," non convergence on element ",element->Id()," for inputs ("); for(i=0;i