void output_saveNodeResults(double reportTime, FILE* file)
//
//  Input:   reportTime = elapsed simulation time (millisec)
//           file = ptr. to binary output file
//  Output:  none
//  Purpose: writes computed node results to binary file.
//
{
    extern TRoutingTotals StepFlowTotals;  // defined in massbal.c
    int j;

    // --- find where current reporting time lies between latest routing times
    double f = (reportTime - OldRoutingTime) /
               (NewRoutingTime - OldRoutingTime);

    // --- write node results to file
    for (j=0; j<Nobjects[NODE]; j++)
    {
        // --- retrieve interpolated results for reporting time & write to file
        node_getResults(j, f, NodeResults);
        if ( Node[j].rptFlag )                                                 //(5.0.014 - LR)
            fwrite(NodeResults, sizeof(REAL4), NnodeResults, file);            //(5.0.014 - LR)

        // --- update system-wide storage volume                               //(5.0.012 - LR)
        //SysResults[SYS_FLOODING] += NodeResults[NODE_OVERFLOW];              //(5.0.012 - LR)
        SysResults[SYS_STORAGE] += NodeResults[NODE_VOLUME];
        //if ( Node[j].degree == 0 )                                           //(5.0.012 - LR)
        //{                                                                    //(5.0.012 - LR)
        //    SysResults[SYS_OUTFLOW] += NodeResults[NODE_INFLOW];             //(5.0.012 - LR)
        //}                                                                    //(5.0.012 - LR)
    }

    // --- update system-wide flows                                            //(5.0.012 - LR)
    SysResults[SYS_FLOODING] = (REAL4) (StepFlowTotals.flooding * UCF(FLOW));  //(5.0.012 - LR)
    SysResults[SYS_OUTFLOW]  = (REAL4) (StepFlowTotals.outflow * UCF(FLOW));   //(5.0.012 - LR)
    SysResults[SYS_DWFLOW] = (REAL4)(StepFlowTotals.dwInflow * UCF(FLOW));
    SysResults[SYS_GWFLOW] = (REAL4)(StepFlowTotals.gwInflow * UCF(FLOW));
    SysResults[SYS_IIFLOW] = (REAL4)(StepFlowTotals.iiInflow * UCF(FLOW));
    SysResults[SYS_EXFLOW] = (REAL4)(StepFlowTotals.exInflow * UCF(FLOW));
    SysResults[SYS_INFLOW] = SysResults[SYS_RUNOFF] +
                             SysResults[SYS_DWFLOW] +
                             SysResults[SYS_GWFLOW] +
                             SysResults[SYS_IIFLOW] +
                             SysResults[SYS_EXFLOW];
}
Exemple #2
0
void output_saveNodeResults(Project* project, double reportTime, FILE* file)
//
//  Input:   reportTime = elapsed simulation time (millisec)
//           file = ptr. to binary output file
//  Output:  none
//  Purpose: writes computed node results to binary file.
//
{
    //project->project->StepFlowTotals;  // defined in massbal.c
    int j;

    // --- find where current reporting time lies between latest routing times
    double f = (reportTime - project->OldRoutingTime) /
               (project->NewRoutingTime - project->OldRoutingTime);

    // --- write node results to file
    for (j=0; j<project->Nobjects[NODE]; j++)
    {
        // --- retrieve interpolated results for reporting time & write to file
        node_getResults(project,j, f, project->NodeResults);
        if ( project->Node[j].rptFlag )
            fwrite(project->NodeResults, sizeof(REAL4), project->NnodeResults, file);
        stats_updateMaxNodeDepth(project,j, project->NodeResults[NODE_DEPTH]);                 //(5.1.008)

        // --- update system-wide storage volume 
        project->SysResults[SYS_STORAGE] += project->NodeResults[NODE_VOLUME];
    }

    // --- update system-wide flows 
    project->SysResults[SYS_FLOODING] = (REAL4) (project->StepFlowTotals.flooding * UCF(project,FLOW));
	project->SysResults[SYS_OUTFLOW] = (REAL4)(project->StepFlowTotals.outflow * UCF(project, FLOW));
	project->SysResults[SYS_DWFLOW] = (REAL4)(project->StepFlowTotals.dwInflow * UCF(project, FLOW));
	project->SysResults[SYS_GWFLOW] = (REAL4)(project->StepFlowTotals.gwInflow * UCF(project, FLOW));
	project->SysResults[SYS_IIFLOW] = (REAL4)(project->StepFlowTotals.iiInflow * UCF(project, FLOW));
	project->SysResults[SYS_EXFLOW] = (REAL4)(project->StepFlowTotals.exInflow * UCF(project, FLOW));
    project->SysResults[SYS_INFLOW] = project->SysResults[SYS_RUNOFF] +
                             project->SysResults[SYS_DWFLOW] +
                             project->SysResults[SYS_GWFLOW] +
                             project->SysResults[SYS_IIFLOW] +
                             project->SysResults[SYS_EXFLOW];
}