617 |
void |
void |
618 |
DataExpanded::dump(const std::string fileName) const |
DataExpanded::dump(const std::string fileName) const |
619 |
{ |
{ |
620 |
throw DataException("Error - DataExpanded:: dump: not implemented."); |
#ifdef PASO_MPI |
621 |
|
throw DataException("Error - DataExpanded:: dump is not implemented for MPI yet.") |
622 |
|
#endif |
623 |
|
const NcDim* ncdims[2+DataArrayView::maxRank]; |
624 |
|
NcVar* var; |
625 |
|
int rank = getPointDataView().getRank(); |
626 |
|
int type= getFunctionSpace().getTypeCode(); |
627 |
|
int ndims =0; |
628 |
|
long dims[2+DataArrayView::maxRank]; |
629 |
|
DataArrayView::ShapeType shape = getPointDataView().getShape(); |
630 |
|
|
631 |
|
// netCDF error handler |
632 |
|
NcError err(NcError::verbose_nonfatal); |
633 |
|
// Create the file. |
634 |
|
NcFile dataFile(fileName.c_str(), NcFile::Replace); |
635 |
|
// check if writing was successful |
636 |
|
if (!dataFile.is_valid()) |
637 |
|
throw DataException("Error - DataExpanded:: opening of netCDF file for output failed."); |
638 |
|
if (!dataFile.add_att("type","constant") ) |
639 |
|
throw DataException("Error - DataExpanded:: appending data type to netCDF file failed."); |
640 |
|
if (!dataFile.add_att("rank",rank) ) |
641 |
|
throw DataException("Error - DataExpanded:: appending rank attribute to netCDF file failed."); |
642 |
|
if (!dataFile.add_att("function_space_type",type)) |
643 |
|
throw DataException("Error - DataExpanded:: appending function space attribute to netCDF file failed."); |
644 |
|
ndims=rank+2; |
645 |
|
if ( rank >1 ) { |
646 |
|
dims[0]=shape[0]; |
647 |
|
if (! (ncdims[0] = dataFile.add_dim("d0",shape[0])) ) |
648 |
|
throw DataException("Error - DataExpanded:: appending ncdimsion 0 to netCDF file failed."); |
649 |
|
} |
650 |
|
if ( rank >1 ) { |
651 |
|
dims[1]=shape[1]; |
652 |
|
if (! (ncdims[1] = dataFile.add_dim("d1",shape[1])) ) |
653 |
|
throw DataException("Error - DataExpanded:: appending ncdimsion 1 to netCDF file failed."); |
654 |
|
} |
655 |
|
if ( rank >2 ) { |
656 |
|
dims[2]=shape[2]; |
657 |
|
if (! (ncdims[2] = dataFile.add_dim("d2", shape[2])) ) |
658 |
|
throw DataException("Error - DataExpanded:: appending ncdimsion 2 to netCDF file failed."); |
659 |
|
} |
660 |
|
if ( rank >3 ) { |
661 |
|
dims[3]=shape[3]; |
662 |
|
if (! (ncdims[3] = dataFile.add_dim("d3", shape[3])) ) |
663 |
|
throw DataException("Error - DataExpanded:: appending ncdimsion 3 to netCDF file failed."); |
664 |
|
} |
665 |
|
dims[rank]= getNumDataPointsPerSample(); |
666 |
|
if (! (ncdims[rank] = dataFile.add_dim("num_data_points_per_sample", dims[rank])) ) |
667 |
|
throw DataException("Error - DataExpanded:: appending num_data_points_per_sample to netCDF file failed."); |
668 |
|
dims[rank+1]= getNumSamples(); |
669 |
|
if (! (ncdims[rank+1] = dataFile.add_dim("num_sample", dims[rank+1])) ) |
670 |
|
throw DataException("Error - DataExpanded:: appending num_sample to netCDF file failed."); |
671 |
|
if (! ( var = dataFile.add_var("data", ncDouble, ndims, ncdims)) ) |
672 |
|
throw DataException("Error - DataExpanded:: appending variable to netCDF file failed."); |
673 |
|
if (! (var->put(&m_data[0],dims)) ) |
674 |
|
throw DataException("Error - DataExpanded:: copy data to netCDF buffer failed."); |
675 |
} |
} |
676 |
|
|
677 |
|
|