Alloc, free persistent parts of Hydraul in allocdata, rather than in allocmatrix
This commit is contained in:
@@ -1777,6 +1777,8 @@ int DLLEXPORT EN_addnode(EN_Project p, char *id, int nodeType, int *index)
|
||||
hyd->NodeDemand = (double *)realloc(hyd->NodeDemand, size);
|
||||
qual->NodeQual = (double *)realloc(qual->NodeQual, size);
|
||||
hyd->NodeHead = (double *)realloc(hyd->NodeHead, size);
|
||||
hyd->DemandFlow = (double *)realloc(hyd->DemandFlow, size);
|
||||
hyd->EmitterFlow = (double *)realloc(hyd->EmitterFlow, size);
|
||||
|
||||
// Actions taken when a new Junction is added
|
||||
if (nodeType == EN_JUNCTION)
|
||||
|
||||
@@ -305,16 +305,12 @@ int allocmatrix(Project *pr)
|
||||
|
||||
hyd->P = (double *) calloc(net->Nlinks+1,sizeof(double));
|
||||
hyd->Y = (double *) calloc(net->Nlinks+1,sizeof(double));
|
||||
hyd->DemandFlow = (double *) calloc(net->Nnodes + 1, sizeof(double));
|
||||
hyd->EmitterFlow = (double *) calloc(net->Nnodes+1, sizeof(double));
|
||||
hyd->Xflow = (double *) calloc(MAX((net->Nnodes+1), (net->Nlinks+1)),
|
||||
sizeof(double));
|
||||
hyd->OldStatus = (StatusType *) calloc(net->Nlinks+net->Ntanks+1,
|
||||
sizeof(StatusType));
|
||||
ERRCODE(MEMCHECK(hyd->P));
|
||||
ERRCODE(MEMCHECK(hyd->Y));
|
||||
ERRCODE(MEMCHECK(hyd->DemandFlow));
|
||||
ERRCODE(MEMCHECK(hyd->EmitterFlow));
|
||||
ERRCODE(MEMCHECK(hyd->Xflow));
|
||||
ERRCODE(MEMCHECK(hyd->OldStatus));
|
||||
return errcode;
|
||||
@@ -334,8 +330,6 @@ void freematrix(Project *pr)
|
||||
|
||||
free(hyd->P);
|
||||
free(hyd->Y);
|
||||
free(hyd->DemandFlow);
|
||||
free(hyd->EmitterFlow);
|
||||
free(hyd->Xflow);
|
||||
free(hyd->OldStatus);
|
||||
}
|
||||
|
||||
@@ -313,10 +313,14 @@ int allocdata(Project *pr)
|
||||
pr->hydraul.NodeDemand = (double *)calloc(n, sizeof(double));
|
||||
pr->hydraul.NodeHead = (double *)calloc(n, sizeof(double));
|
||||
pr->quality.NodeQual = (double *)calloc(n, sizeof(double));
|
||||
pr->hydraul.DemandFlow = (double *)calloc(n, sizeof(double));
|
||||
pr->hydraul.EmitterFlow = (double *)calloc(n, sizeof(double));
|
||||
ERRCODE(MEMCHECK(pr->network.Node));
|
||||
ERRCODE(MEMCHECK(pr->hydraul.NodeDemand));
|
||||
ERRCODE(MEMCHECK(pr->hydraul.NodeHead));
|
||||
ERRCODE(MEMCHECK(pr->quality.NodeQual));
|
||||
ERRCODE(MEMCHECK(pr->hydraul.DemandFlow));
|
||||
ERRCODE(MEMCHECK(pr->hydraul.EmitterFlow));
|
||||
}
|
||||
|
||||
// Allocate memory for network links
|
||||
@@ -388,6 +392,8 @@ void freedata(Project *pr)
|
||||
free(pr->hydraul.LinkFlow);
|
||||
free(pr->hydraul.LinkSetting);
|
||||
free(pr->hydraul.LinkStatus);
|
||||
free(pr->hydraul.DemandFlow);
|
||||
free(pr->hydraul.EmitterFlow);
|
||||
free(pr->quality.NodeQual);
|
||||
|
||||
// Free memory used for nodal adjacency lists
|
||||
|
||||
Reference in New Issue
Block a user