Changeset 1045
- Timestamp:
- 02/02/17 10:39:53 (7 years ago)
- Location:
- XIOS/trunk/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/config/axis_attribute.conf
r817 r1045 29 29 DECLARE_ARRAY(bool, 1 , mask) 30 30 DECLARE_ARRAY(double, 2 , bounds) 31 DECLARE_ATTRIBUTE(int, prec) -
XIOS/trunk/src/config/domain_attribute.conf
r953 r1045 53 53 DECLARE_ENUM4(type,rectilinear,curvilinear,unstructured, gaussian) 54 54 DECLARE_ATTRIBUTE(StdString, domain_ref) 55 DECLARE_ATTRIBUTE(int, prec) -
XIOS/trunk/src/config/scalar_attribute.conf
r887 r1045 9 9 10 10 DECLARE_ATTRIBUTE(StdString, scalar_ref) 11 DECLARE_ATTRIBUTE(int, prec) -
XIOS/trunk/src/io/nc4_data_output.cpp
r1044 r1045 75 75 76 76 77 StdString dimXid, dimYid ; 78 77 StdString dimXid, dimYid ; 78 79 nc_type typePrec ; 80 if (domain->prec.isEmpty()) typePrec = NC_FLOAT ; 81 else if (domain->prec==4) typePrec = NC_FLOAT ; 82 else if (domain->prec==8) typePrec = NC_DOUBLE ; 83 79 84 bool isRegularDomain = (domain->type == CDomain::type_attr::rectilinear); 80 85 switch (domain->type) … … 164 169 { 165 170 case CDomain::type_attr::curvilinear : 166 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0);167 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0);171 SuperClassWriter::addVariable(latid, typePrec, dim0); 172 SuperClassWriter::addVariable(lonid, typePrec, dim0); 168 173 break ; 169 174 case CDomain::type_attr::rectilinear : 170 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0);171 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim1);175 SuperClassWriter::addVariable(latid, typePrec, dim0); 176 SuperClassWriter::addVariable(lonid, typePrec, dim1); 172 177 break ; 173 178 } … … 185 190 dim0.push_back(dimXid); 186 191 dim0.push_back(dimVertId); 187 SuperClassWriter::addVariable(bounds_lonid, NC_FLOAT, dim0);188 SuperClassWriter::addVariable(bounds_latid, NC_FLOAT, dim0);192 SuperClassWriter::addVariable(bounds_lonid, typePrec, dim0); 193 SuperClassWriter::addVariable(bounds_latid, typePrec, dim0); 189 194 } 190 195 } … … 211 216 if (domain->hasArea) 212 217 { 213 SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0);218 SuperClassWriter::addVariable(areaId, typePrec, dim0); 214 219 SuperClassWriter::addAttribute("standard_name", StdString("cell_area"), &areaId); 215 220 SuperClassWriter::addAttribute("units", StdString("m2"), &areaId); … … 264 269 lonid = StdString("nav_lon").append(appendDomid); 265 270 latid = StdString("nav_lat").append(appendDomid); 266 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0);267 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0);271 SuperClassWriter::addVariable(latid, typePrec, dim0); 272 SuperClassWriter::addVariable(lonid, typePrec, dim0); 268 273 break; 269 274 … … 273 278 lonid = StdString("lon").append(appendDomid); 274 279 latid = StdString("lat").append(appendDomid); 275 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0);276 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim1);280 SuperClassWriter::addVariable(latid, typePrec, dim0); 281 SuperClassWriter::addVariable(lonid, typePrec, dim1); 277 282 break; 278 283 } … … 295 300 dim0.push_back(dimXid); 296 301 dim0.push_back(dimVertId); 297 SuperClassWriter::addVariable(bounds_lonid, NC_FLOAT, dim0);298 SuperClassWriter::addVariable(bounds_latid, NC_FLOAT, dim0);302 SuperClassWriter::addVariable(bounds_lonid, typePrec, dim0); 303 SuperClassWriter::addVariable(bounds_latid, typePrec, dim0); 299 304 } 300 305 } … … 304 309 dim0.clear(); 305 310 dim0.push_back(dimYid); dim0.push_back(dimXid); 306 SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0);311 SuperClassWriter::addVariable(areaId, typePrec, dim0); 307 312 SuperClassWriter::addAttribute("standard_name", StdString("cell_area"), &areaId); 308 313 SuperClassWriter::addAttribute("units", StdString("m2"), &areaId); … … 446 451 if (SuperClass::type==MULTI_FILE) return ; 447 452 453 nc_type typePrec ; 454 if (domain->prec.isEmpty()) typePrec = NC_FLOAT ; 455 else if (domain->prec==4) typePrec = NC_FLOAT ; 456 else if (domain->prec==8) typePrec = NC_DOUBLE ; 457 448 458 std::vector<StdString> dim0; 449 459 StdString domid = domain->getDomainOutputName(); … … 497 507 dim0.clear(); 498 508 dim0.push_back(dimNode); 499 SuperClassWriter::addVariable(node_x, NC_FLOAT, dim0);509 SuperClassWriter::addVariable(node_x, typePrec, dim0); 500 510 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &node_x); 501 511 SuperClassWriter::addAttribute("long_name", StdString("Longitude of mesh nodes."), &node_x); 502 512 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &node_x); 503 SuperClassWriter::addVariable(node_y, NC_FLOAT, dim0);513 SuperClassWriter::addVariable(node_y, typePrec, dim0); 504 514 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &node_y); 505 515 SuperClassWriter::addAttribute("long_name", StdString("Latitude of mesh nodes."), &node_y); … … 516 526 dim0.clear(); 517 527 dim0.push_back(dimNode); 518 SuperClassWriter::addVariable(node_x, NC_FLOAT, dim0);528 SuperClassWriter::addVariable(node_x, typePrec, dim0); 519 529 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &node_x); 520 530 SuperClassWriter::addAttribute("long_name", StdString("Longitude of mesh nodes."), &node_x); 521 531 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &node_x); 522 SuperClassWriter::addVariable(node_y, NC_FLOAT, dim0);532 SuperClassWriter::addVariable(node_y, typePrec, dim0); 523 533 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &node_y); 524 534 SuperClassWriter::addAttribute("long_name", StdString("Latitude of mesh nodes."), &node_y); … … 530 540 dim0.clear(); 531 541 dim0.push_back(dimEdge); 532 SuperClassWriter::addVariable(edge_x, NC_FLOAT, dim0);542 SuperClassWriter::addVariable(edge_x, typePrec, dim0); 533 543 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &edge_x); 534 544 SuperClassWriter::addAttribute("long_name", StdString("Characteristic longitude of mesh edges."), &edge_x); 535 545 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &edge_x); 536 SuperClassWriter::addVariable(edge_y, NC_FLOAT, dim0);546 SuperClassWriter::addVariable(edge_y, typePrec, dim0); 537 547 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &edge_y); 538 548 SuperClassWriter::addAttribute("long_name", StdString("Characteristic latitude of mesh edges."), &edge_y); … … 556 566 dim0.clear(); 557 567 dim0.push_back(dimNode); 558 SuperClassWriter::addVariable(node_x, NC_FLOAT, dim0);568 SuperClassWriter::addVariable(node_x, typePrec, dim0); 559 569 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &node_x); 560 570 SuperClassWriter::addAttribute("long_name", StdString("Longitude of mesh nodes."), &node_x); 561 571 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &node_x); 562 SuperClassWriter::addVariable(node_y, NC_FLOAT, dim0);572 SuperClassWriter::addVariable(node_y, typePrec, dim0); 563 573 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &node_y); 564 574 SuperClassWriter::addAttribute("long_name", StdString("Latitude of mesh nodes."), &node_y); … … 572 582 dim0.clear(); 573 583 dim0.push_back(dimEdge); 574 SuperClassWriter::addVariable(edge_x, NC_FLOAT, dim0);584 SuperClassWriter::addVariable(edge_x, typePrec, dim0); 575 585 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &edge_x); 576 586 SuperClassWriter::addAttribute("long_name", StdString("Characteristic longitude of mesh edges."), &edge_x); 577 587 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &edge_x); 578 SuperClassWriter::addVariable(edge_y, NC_FLOAT, dim0);588 SuperClassWriter::addVariable(edge_y, typePrec, dim0); 579 589 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &edge_y); 580 590 SuperClassWriter::addAttribute("long_name", StdString("Characteristic latitude of mesh edges."), &edge_y); … … 594 604 dim0.clear(); 595 605 dim0.push_back(dimFace); 596 SuperClassWriter::addVariable(face_x, NC_FLOAT, dim0);606 SuperClassWriter::addVariable(face_x, typePrec, dim0); 597 607 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &face_x); 598 608 SuperClassWriter::addAttribute("long_name", StdString("Characteristic longitude of mesh faces."), &face_x); 599 609 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &face_x); 600 SuperClassWriter::addVariable(face_y, NC_FLOAT, dim0);610 SuperClassWriter::addVariable(face_y, typePrec, dim0); 601 611 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &face_y); 602 612 SuperClassWriter::addAttribute("long_name", StdString("Characteristic latitude of mesh faces."), &face_y); … … 860 870 string areaId = "area" + appendDomid; 861 871 872 nc_type typePrec ; 873 if (domain->prec.isEmpty()) typePrec = NC_FLOAT ; 874 else if (domain->prec==4) typePrec = NC_FLOAT ; 875 else if (domain->prec==8) typePrec = NC_DOUBLE ; 876 862 877 try 863 878 { … … 875 890 if (domain->hasLonLat) 876 891 { 877 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0);878 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0);892 SuperClassWriter::addVariable(latid, typePrec, dim0); 893 SuperClassWriter::addVariable(lonid, typePrec, dim0); 879 894 this->writeAxisAttributes(lonid, "", "longitude", "Longitude", "degrees_east", domid); 880 895 if (domain->hasBounds) SuperClassWriter::addAttribute("bounds",bounds_lonid, &lonid); … … 888 903 dim0.push_back(dimXid); 889 904 dim0.push_back(dimVertId); 890 SuperClassWriter::addVariable(bounds_lonid, NC_FLOAT, dim0);891 SuperClassWriter::addVariable(bounds_latid, NC_FLOAT, dim0);905 SuperClassWriter::addVariable(bounds_lonid, typePrec, dim0); 906 SuperClassWriter::addVariable(bounds_latid, typePrec, dim0); 892 907 } 893 908 … … 896 911 if (domain->hasArea) 897 912 { 898 SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0);913 SuperClassWriter::addVariable(areaId, typePrec, dim0); 899 914 SuperClassWriter::addAttribute("standard_name", StdString("cell_area"), &areaId); 900 915 SuperClassWriter::addAttribute("units", StdString("m2"), &areaId); … … 931 946 if (domain->hasLonLat) 932 947 { 933 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0);934 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim0);948 SuperClassWriter::addVariable(latid, typePrec, dim0); 949 SuperClassWriter::addVariable(lonid, typePrec, dim0); 935 950 936 951 this->writeAxisAttributes(lonid, "", "longitude", "Longitude", "degrees_east", domid); … … 946 961 dim0.push_back(dimXid); 947 962 dim0.push_back(dimVertId); 948 SuperClassWriter::addVariable(bounds_lonid, NC_FLOAT, dim0);949 SuperClassWriter::addVariable(bounds_latid, NC_FLOAT, dim0);963 SuperClassWriter::addVariable(bounds_lonid, typePrec, dim0); 964 SuperClassWriter::addVariable(bounds_latid, typePrec, dim0); 950 965 } 951 966 … … 954 969 dim0.clear(); 955 970 dim0.push_back(dimXid); 956 SuperClassWriter::addVariable(areaId, NC_FLOAT, dim0);971 SuperClassWriter::addVariable(areaId, typePrec, dim0); 957 972 SuperClassWriter::addAttribute("standard_name", StdString("cell_area"), &areaId); 958 973 SuperClassWriter::addAttribute("units", StdString("m2"), &areaId); … … 1037 1052 else setWrittenAxis(axisid); 1038 1053 1054 nc_type typePrec ; 1055 if (axis->prec.isEmpty()) typePrec = NC_FLOAT ; 1056 else if (axis->prec==4) typePrec = NC_FLOAT ; 1057 else if (axis->prec==8) typePrec = NC_DOUBLE ; 1058 1039 1059 try 1040 1060 { … … 1043 1063 { 1044 1064 dims.push_back(axisid); 1045 SuperClassWriter::addVariable(axisid, NC_FLOAT, dims);1065 SuperClassWriter::addVariable(axisid, typePrec, dims); 1046 1066 1047 1067 if (!axis->name.isEmpty()) … … 1069 1089 { 1070 1090 dims.push_back("axis_nbounds"); 1071 SuperClassWriter::addVariable(axisBoundsId, NC_FLOAT, dims);1091 SuperClassWriter::addVariable(axisBoundsId, typePrec, dims); 1072 1092 SuperClassWriter::addAttribute("bounds", axisBoundsId, &axisid); 1073 1093 } … … 1140 1160 else setWrittenAxis(scalaId); 1141 1161 1162 nc_type typePrec ; 1163 if (scalar->prec.isEmpty()) typePrec = NC_FLOAT ; 1164 else if (scalar->prec==4) typePrec = NC_FLOAT ; 1165 else if (scalar->prec==8) typePrec = NC_DOUBLE ; 1166 1167 1142 1168 try 1143 1169 { … … 1146 1172 // dims.push_back(scalaId); 1147 1173 std::vector<StdString> dims; 1148 SuperClassWriter::addVariable(scalaId, NC_FLOAT, dims);1174 SuperClassWriter::addVariable(scalaId, typePrec, dims); 1149 1175 1150 1176 if (!scalar->name.isEmpty())
Note: See TracChangeset
for help on using the changeset viewer.