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); } }
/* 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); } }