示例#1
0
void mde_delta_h_coll_handle_block(t_mde_delta_h_coll *dhc,
                                   t_enxframe *fr, int nblock)
{
    int i;
    t_enxblock *blk;

    /* add one block with one subblock as the collection's own data */
    nblock++;
    add_blocks_enxframe(fr, nblock);
    blk=fr->block + (nblock-1);

    add_subblocks_enxblock(blk, 1);

    dhc->subblock_d[0] = dhc->temperature; /* temperature */
    dhc->subblock_d[1] = dhc->start_time; /* time of first sample */
    dhc->subblock_d[2] = dhc->delta_time; /* time difference between samples */
    dhc->subblock_d[3] = dhc->start_lambda; /* lambda at starttime */
    dhc->subblock_d[4] = dhc->delta_lambda; /* lambda diff. between samples */
    blk->id=enxDHCOLL;
    blk->sub[0].nr=5;
    blk->sub[0].type=xdr_datatype_double;
    blk->sub[0].dval=dhc->subblock_d;

    for(i=0;i<dhc->ndh;i++)
    {
        nblock++;
        add_blocks_enxframe(fr, nblock);
        blk=fr->block + (nblock-1);

        mde_delta_h_handle_block(dhc->dh+i, blk);
    }
}
示例#2
0
/* write the metadata associated with all the du blocks, and call
   handle_block to write out all the du blocks */
void mde_delta_h_coll_handle_block(t_mde_delta_h_coll *dhc,
                                   t_enxframe *fr, int nblock)
{
    int         i;
    t_enxblock *blk;

    /* add one block with one subblock as the collection's own data */
    nblock++;
    add_blocks_enxframe(fr, nblock);
    blk = fr->block + (nblock-1);

    /* only allocate lambda vector component blocks if they must be written out
       for backward compatibility */
    if (dhc->native_lambda_components != NULL)
    {
        add_subblocks_enxblock(blk, 2);
    }
    else
    {
        add_subblocks_enxblock(blk, 1);
    }

    dhc->subblock_d[0] = dhc->temperature;  /* temperature */
    dhc->subblock_d[1] = dhc->start_time;   /* time of first sample */
    dhc->subblock_d[2] = dhc->delta_time;   /* time difference between samples */
    dhc->subblock_d[3] = dhc->start_lambda; /* old-style lambda at starttime */
    dhc->subblock_d[4] = dhc->delta_lambda; /* lambda diff. between samples */
    /* set the lambda vector components if they exist */
    if (dhc->native_lambda_components != NULL)
    {
        for (i = 0; i < dhc->n_lambda_vec; i++)
        {
            dhc->subblock_d[5+i] = dhc->native_lambda_vec[i];
        }
    }
    blk->id          = enxDHCOLL;
    blk->sub[0].nr   = 5 + dhc->n_lambda_vec;
    blk->sub[0].type = xdr_datatype_double;
    blk->sub[0].dval = dhc->subblock_d;

    if (dhc->native_lambda_components != NULL)
    {
        dhc->subblock_i[0] = dhc->lambda_index;
        /* set the lambda vector component IDs if they exist */
        dhc->subblock_i[1] = dhc->n_lambda_vec;
        for (i = 0; i < dhc->n_lambda_vec; i++)
        {
            dhc->subblock_i[i+2] = dhc->native_lambda_components[i];
        }
        blk->sub[1].nr   = 2 + dhc->n_lambda_vec;
        blk->sub[1].type = xdr_datatype_int;
        blk->sub[1].ival = dhc->subblock_i;
    }

    for (i = 0; i < dhc->ndh; i++)
    {
        nblock++;
        add_blocks_enxframe(fr, nblock);
        blk = fr->block + (nblock-1);

        mde_delta_h_handle_block(dhc->dh+i, blk);
    }
}