Changeset 692 for XIOS/trunk/src/io
- Timestamp:
- 09/16/15 16:26:32 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/io/nc4_data_output.cpp
r686 r692 1409 1409 1410 1410 CArray<double,1> time_data(1) ; 1411 CArray<double,1> time_data_bound(2); 1411 1412 CArray<double,1> time_counter(1) ; 1412 1413 CArray<double,1> time_counter_bound(2); 1413 CArray<double,1> time_data_bound(2);1414 1414 1415 1415 bool wtime = !(!field->operation.isEmpty() && (field->getOperationTimeType() == func::CFunctor::once)); … … 1417 1417 if (wtime) 1418 1418 { 1419 time_counter(0)= (Time(field->last_Write_srv) + Time(field->lastlast_Write_srv)) / 2; 1419 Time lastWrite = field->last_Write_srv; 1420 Time lastLastWrite = field->lastlast_Write_srv; 1421 1420 1422 if (field->getOperationTimeType() == func::CFunctor::instant) 1421 time_data(0) = Time(field->last_Write_srv); 1422 else if (field->getOperationTimeType() == func::CFunctor::centered) time_data(0) = time_counter(0); 1423 1424 time_counter_bound(0) = Time(field->lastlast_Write_srv); 1425 time_counter_bound(1) = Time(field->last_Write_srv); 1423 time_data(0) = lastWrite; 1424 else if (field->getOperationTimeType() == func::CFunctor::centered) 1425 time_data(0) = (lastWrite + lastLastWrite) / 2; 1426 1426 1427 if (field->getOperationTimeType() == func::CFunctor::instant) 1427 time_data_bound(0) = time_data_bound(1) = Time(field->last_Write_srv);1428 time_data_bound(0) = time_data_bound(1) = lastWrite; 1428 1429 else if (field->getOperationTimeType() == func::CFunctor::centered) 1429 1430 { 1430 time_data_bound(0) = time_counter_bound(0);1431 time_data_bound(1) = time_counter_bound(1);1431 time_data_bound(0) = lastLastWrite; 1432 time_data_bound(1) = lastWrite; 1432 1433 } 1433 } 1434 1435 if (field->file->time_counter == CFile::time_counter_attr::instant) 1436 time_counter(0) = lastWrite; 1437 else if (field->file->time_counter == CFile::time_counter_attr::centered) 1438 time_counter(0) = (lastWrite + lastLastWrite) / 2; 1439 else if (field->file->time_counter == CFile::time_counter_attr::record) 1440 time_counter(0) = field->getNStep() - 1; 1441 1442 1443 if (field->file->time_counter == CFile::time_counter_attr::instant) 1444 time_counter_bound(0) = time_counter_bound(1) = lastWrite; 1445 else if (field->file->time_counter == CFile::time_counter_attr::centered) 1446 { 1447 time_counter_bound(0) = lastLastWrite; 1448 time_counter_bound(1) = lastWrite; 1449 } 1450 else if (field->file->time_counter == CFile::time_counter_attr::record) 1451 time_counter_bound(0) = time_counter_bound(1) = field->getNStep() - 1; 1452 } 1434 1453 1435 1454 bool isRoot ; … … 1468 1487 case (MULTI_FILE) : 1469 1488 { 1470 SuperClassWriter::writeData(fieldData, fieldid, isCollective, field->getNStep() -1);1489 SuperClassWriter::writeData(fieldData, fieldid, isCollective, field->getNStep() - 1); 1471 1490 if (wtime) 1472 1491 { 1473 SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep()-1); 1474 SuperClassWriter::writeData(time_counter, string("time_counter"), isCollective, field->getNStep()-1); 1475 SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep()-1); 1476 SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep()-1); 1492 SuperClassWriter::writeData(time_data, timeAxisId, isCollective, field->getNStep() - 1); 1493 SuperClassWriter::writeData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1); 1494 if (field->file->time_counter != CFile::time_counter_attr::none) 1495 { 1496 SuperClassWriter::writeData(time_counter, string("time_counter"), isCollective, field->getNStep() - 1); 1497 if (field->file->time_counter != CFile::time_counter_attr::record) 1498 SuperClassWriter::writeData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1); 1499 } 1477 1500 } 1478 1501 break ; … … 1566 1589 if (wtime) 1567 1590 { 1568 SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep() - 1, isRoot); 1569 SuperClassWriter::writeTimeAxisData(time_counter, string("time_counter"), isCollective, field->getNStep() - 1, isRoot); 1570 SuperClassWriter::writeTimeAxisData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1, isRoot); 1571 SuperClassWriter::writeTimeAxisData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1, isRoot); 1591 SuperClassWriter::writeTimeAxisData(time_data, timeAxisId, isCollective, field->getNStep() - 1, isRoot); 1592 SuperClassWriter::writeTimeAxisData(time_data_bound, timeAxisBoundId, isCollective, field->getNStep() - 1, isRoot); 1593 if (field->file->time_counter != CFile::time_counter_attr::none) 1594 { 1595 SuperClassWriter::writeTimeAxisData(time_counter, string("time_counter"), isCollective, field->getNStep() - 1, isRoot); 1596 if (field->file->time_counter != CFile::time_counter_attr::record) 1597 SuperClassWriter::writeTimeAxisData(time_counter_bound, timeBoundId, isCollective, field->getNStep() - 1, isRoot); 1598 } 1572 1599 } 1573 1600 … … 1645 1672 } 1646 1673 1647 // Adding time_counter 1648 axisid = "time_counter" ; 1649 axisBoundId = "time_counter_bounds" ; 1650 dims.clear() ; 1651 dims.push_back(timeid); 1652 if (!SuperClassWriter::varExist(axisid)) 1674 if (field->file->time_counter != CFile::time_counter_attr::none) 1653 1675 { 1654 SuperClassWriter::addVariable(axisid, NC_DOUBLE, dims); 1655 SuperClassWriter::addAttribute("axis", string("T"), &axisid); 1656 CDate timeOrigin=cal->getTimeOrigin() ; 1657 StdString strTimeOrigin=timeOrigin.toString() ; 1658 1659 this->writeTimeAxisAttributes 1660 (axisid, cal->getType(), 1661 StdString("seconds since ").append(strTimeOrigin), 1662 strTimeOrigin, axisBoundId); 1663 } 1664 1665 // Adding time_counter_bound dimension 1666 if (!SuperClassWriter::varExist(axisBoundId)) 1667 { 1668 dims.clear(); 1669 dims.push_back(timeid); 1670 dims.push_back(timeBoundId); 1671 SuperClassWriter::addVariable(axisBoundId, NC_DOUBLE, dims); 1676 // Adding time_counter 1677 axisid = "time_counter"; 1678 axisBoundId = "time_counter_bounds"; 1679 dims.clear(); 1680 dims.push_back(timeid); 1681 if (!SuperClassWriter::varExist(axisid)) 1682 { 1683 SuperClassWriter::addVariable(axisid, NC_DOUBLE, dims); 1684 SuperClassWriter::addAttribute("axis", string("T"), &axisid); 1685 1686 if (field->file->time_counter != CFile::time_counter_attr::record) 1687 { 1688 CDate timeOrigin = cal->getTimeOrigin(); 1689 StdString strTimeOrigin = timeOrigin.toString(); 1690 1691 this->writeTimeAxisAttributes(axisid, cal->getType(), 1692 StdString("seconds since ").append(strTimeOrigin), 1693 strTimeOrigin, axisBoundId); 1694 } 1695 } 1696 1697 // Adding time_counter_bound dimension 1698 if (field->file->time_counter != CFile::time_counter_attr::record) 1699 { 1700 if (!SuperClassWriter::varExist(axisBoundId)) 1701 { 1702 dims.clear(); 1703 dims.push_back(timeid); 1704 dims.push_back(timeBoundId); 1705 SuperClassWriter::addVariable(axisBoundId, NC_DOUBLE, dims); 1706 } 1707 } 1672 1708 } 1673 1709 }
Note: See TracChangeset
for help on using the changeset viewer.