Changeset 924 for XIOS/trunk/src/io/nc4_data_output.cpp
- Timestamp:
- 09/02/16 09:41:27 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/io/nc4_data_output.cpp
r902 r924 26 26 CNc4DataOutput::CNc4DataOutput 27 27 (const StdString & filename, bool exist, bool useClassicFormat, bool useCFConvention, 28 MPI_Comm comm_file, bool multifile, bool isCollective, const StdString& timeCounterName)28 MPI_Comm comm_file, bool multifile, bool isCollective, const StdString& timeCounterName) 29 29 : SuperClass() 30 30 , SuperClassWriter(filename, exist, useClassicFormat, useCFConvention, &comm_file, multifile, timeCounterName) … … 449 449 StdString domid = domain->getDomainOutputName(); 450 450 StdString domainName = domain->name; 451 domain->assignMesh(domainName );452 domain->mesh->createMesh(domain->lonvalue_srv, domain->latvalue_srv, domain->bounds_lon_srv, domain->bounds_lat_srv);453 //domain->mesh->createMeshEpsilon(server->intraComm, domain->lonvalue_srv, domain->latvalue_srv, domain->bounds_lon_srv, domain->bounds_lat_srv);451 domain->assignMesh(domainName, domain->nvertex); 452 //domain->mesh->createMesh(domain->lonvalue_srv, domain->latvalue_srv, domain->bounds_lon_srv, domain->bounds_lat_srv); 453 domain->mesh->createMeshEpsilon(server->intraComm, domain->lonvalue_srv, domain->latvalue_srv, domain->bounds_lon_srv, domain->bounds_lat_srv); 454 454 455 455 StdString node_x = domainName + "_node_x"; … … 479 479 SuperClassWriter::addVariable(domainName, NC_INT, dim0); 480 480 SuperClassWriter::addAttribute("cf_role", StdString("mesh_topology"), &domainName); 481 SuperClassWriter::addAttribute("long_name", StdString("Topology data of 2D unstructured mesh"), &domainName); 482 SuperClassWriter::addAttribute("topology_dimension", 2, &domainName); 481 483 SuperClassWriter::addAttribute("node_coordinates", node_x + " " + node_y, &domainName); 482 484 } … … 498 500 SuperClassWriter::addVariable(node_x, NC_FLOAT, dim0); 499 501 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &node_x); 500 SuperClassWriter::addAttribute("long name_name", StdString("Longitude of mesh nodes."), &node_x);502 SuperClassWriter::addAttribute("long_name", StdString("Longitude of mesh nodes."), &node_x); 501 503 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &node_x); 502 504 SuperClassWriter::addVariable(node_y, NC_FLOAT, dim0); 503 505 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &node_y); 504 SuperClassWriter::addAttribute("long name_name", StdString("Latitude of mesh nodes."), &node_y);506 SuperClassWriter::addAttribute("long_name", StdString("Latitude of mesh nodes."), &node_y); 505 507 SuperClassWriter::addAttribute("units", StdString("degrees_north"), &node_y); 506 508 } … … 512 514 if (!SuperClassWriter::varExist(node_x) || !SuperClassWriter::varExist(node_y)) 513 515 { 514 SuperClassWriter::addDimension(dimNode, domain->mesh->nbNodes );516 SuperClassWriter::addDimension(dimNode, domain->mesh->nbNodesGlo); 515 517 dim0.clear(); 516 518 dim0.push_back(dimNode); 517 519 SuperClassWriter::addVariable(node_x, NC_FLOAT, dim0); 518 520 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &node_x); 519 SuperClassWriter::addAttribute("long name_name", StdString("Longitude of mesh nodes."), &node_x);521 SuperClassWriter::addAttribute("long_name", StdString("Longitude of mesh nodes."), &node_x); 520 522 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &node_x); 521 523 SuperClassWriter::addVariable(node_y, NC_FLOAT, dim0); 522 524 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &node_y); 523 SuperClassWriter::addAttribute("longname_name", StdString("Latitude of mesh nodes."), &node_y); 525 SuperClassWriter::addAttribute("long_name", StdString("Latitude of mesh nodes."), &node_y); 526 SuperClassWriter::addAttribute("units", StdString("degrees_north"), &node_y); 527 } 528 SuperClassWriter::addAttribute("edge_node_connectivity", edge_nodes, &domainName); 529 SuperClassWriter::addAttribute("edge_coordinates", edge_x + " " + edge_y, &domainName); 530 SuperClassWriter::addDimension(dimEdge, domain->ni_glo); 531 dim0.clear(); 532 dim0.push_back(dimEdge); 533 SuperClassWriter::addVariable(edge_x, NC_FLOAT, dim0); 534 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &edge_x); 535 SuperClassWriter::addAttribute("long_name", StdString("Characteristic longitude of mesh edges."), &edge_x); 536 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &edge_x); 537 SuperClassWriter::addVariable(edge_y, NC_FLOAT, dim0); 538 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &edge_y); 539 SuperClassWriter::addAttribute("long_name", StdString("Characteristic latitude of mesh edges."), &edge_y); 540 SuperClassWriter::addAttribute("units", StdString("degrees_north"), &edge_y); 541 dim0.clear(); 542 dim0.push_back(dimEdge); 543 dim0.push_back(dimTwo); 544 SuperClassWriter::addVariable(edge_nodes, NC_INT, dim0); 545 SuperClassWriter::addAttribute("cf_role", StdString("edge_node_connectivity"), &edge_nodes); 546 SuperClassWriter::addAttribute("long_name", StdString("Maps every edge/link to two nodes that it connects."), &edge_nodes); 547 SuperClassWriter::addAttribute("start_index", 0, &edge_nodes); 548 } // domain->nvertex == 2 549 550 // Adding faces, edges, and nodes, if edges and nodes have not been defined previously 551 if (domain->nvertex > 2) 552 { 553 // Nodes 554 if (!SuperClassWriter::varExist(node_x) || !SuperClassWriter::varExist(node_y)) 555 { 556 SuperClassWriter::addDimension(dimNode, domain->mesh->nbNodesGlo); 557 dim0.clear(); 558 dim0.push_back(dimNode); 559 SuperClassWriter::addVariable(node_x, NC_FLOAT, dim0); 560 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &node_x); 561 SuperClassWriter::addAttribute("long_name", StdString("Longitude of mesh nodes."), &node_x); 562 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &node_x); 563 SuperClassWriter::addVariable(node_y, NC_FLOAT, dim0); 564 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &node_y); 565 SuperClassWriter::addAttribute("long_name", StdString("Latitude of mesh nodes."), &node_y); 524 566 SuperClassWriter::addAttribute("units", StdString("degrees_north"), &node_y); 525 567 } 526 568 if (!SuperClassWriter::varExist(edge_x) || !SuperClassWriter::varExist(edge_y)) 527 569 { 570 SuperClassWriter::addAttribute("edge_coordinates", edge_x + " " + edge_y, &domainName); 528 571 SuperClassWriter::addAttribute("edge_node_connectivity", edge_nodes, &domainName); 529 SuperClassWriter::addAttribute("edge_coordinates", edge_x + " " + edge_y, &domainName); 530 SuperClassWriter::addDimension(dimEdge, domain->mesh->nbEdges); 572 SuperClassWriter::addDimension(dimEdge, domain->mesh->nbEdgesGlo); 531 573 dim0.clear(); 532 574 dim0.push_back(dimEdge); 533 575 SuperClassWriter::addVariable(edge_x, NC_FLOAT, dim0); 534 576 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &edge_x); 535 SuperClassWriter::addAttribute("long name_name", StdString("Characteristic longitude of mesh edges."), &edge_x);577 SuperClassWriter::addAttribute("long_name", StdString("Characteristic longitude of mesh edges."), &edge_x); 536 578 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &edge_x); 537 579 SuperClassWriter::addVariable(edge_y, NC_FLOAT, dim0); 538 580 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &edge_y); 539 SuperClassWriter::addAttribute("long name_name", StdString("Characteristic latitude of mesh edges."), &edge_y);581 SuperClassWriter::addAttribute("long_name", StdString("Characteristic latitude of mesh edges."), &edge_y); 540 582 SuperClassWriter::addAttribute("units", StdString("degrees_north"), &edge_y); 541 583 dim0.clear(); … … 547 589 SuperClassWriter::addAttribute("start_index", 0, &edge_nodes); 548 590 } 549 } // domain->nvertex == 2 550 551 // Adding faces, edges, and nodes, if edges and nodes have not been defined previously 552 if (domain->nvertex > 2) 553 { 554 // Nodes 555 if (!SuperClassWriter::varExist(node_x) || !SuperClassWriter::varExist(node_y)) 556 { 557 SuperClassWriter::addDimension(dimNode, domain->mesh->nbNodes); 558 dim0.clear(); 559 dim0.push_back(dimNode); 560 SuperClassWriter::addVariable(node_x, NC_FLOAT, dim0); 561 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &node_x); 562 SuperClassWriter::addAttribute("longname_name", StdString("Longitude of mesh nodes."), &node_x); 563 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &node_x); 564 SuperClassWriter::addVariable(node_y, NC_FLOAT, dim0); 565 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &node_y); 566 SuperClassWriter::addAttribute("longname_name", StdString("Latitude of mesh nodes."), &node_y); 567 SuperClassWriter::addAttribute("units", StdString("degrees_north"), &node_y); 568 } 569 if (!SuperClassWriter::varExist(edge_x) || !SuperClassWriter::varExist(edge_y)) 570 { 571 SuperClassWriter::addAttribute("edge_coordinates", edge_x + " " + edge_y, &domainName); 572 SuperClassWriter::addAttribute("edge_node_connectivity", edge_nodes, &domainName); 573 SuperClassWriter::addDimension(dimEdge, domain->mesh->nbEdges); 574 dim0.clear(); 575 dim0.push_back(dimEdge); 576 SuperClassWriter::addVariable(edge_x, NC_FLOAT, dim0); 577 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &edge_x); 578 SuperClassWriter::addAttribute("longname_name", StdString("Characteristic longitude of mesh edges."), &edge_x); 579 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &edge_x); 580 SuperClassWriter::addVariable(edge_y, NC_FLOAT, dim0); 581 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &edge_y); 582 SuperClassWriter::addAttribute("longname_name", StdString("Characteristic latitude of mesh edges."), &edge_y); 583 SuperClassWriter::addAttribute("units", StdString("degrees_north"), &edge_y); 584 dim0.clear(); 585 dim0.push_back(dimEdge); 586 dim0.push_back(dimTwo); 587 SuperClassWriter::addVariable(edge_nodes, NC_INT, dim0); 588 SuperClassWriter::addAttribute("cf_role", StdString("edge_node_connectivity"), &edge_nodes); 589 SuperClassWriter::addAttribute("long_name", StdString("Maps every edge/link to two nodes that it connects."), &edge_nodes); 590 SuperClassWriter::addAttribute("start_index", 0, &edge_nodes); 591 } 592 SuperClassWriter::addAttribute("face_coordinates", face_x + " " + face_y, &domainName); 593 SuperClassWriter::addAttribute("face_node_connectivity", face_nodes, &domainName); 594 SuperClassWriter::addDimension(dimFace, domain->mesh->nbFaces); 595 SuperClassWriter::addDimension(dimVertex, domain->mesh->nvertex); 596 dim0.clear(); 597 dim0.push_back(dimFace); 598 SuperClassWriter::addVariable(face_x, NC_FLOAT, dim0); 599 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &face_x); 600 SuperClassWriter::addAttribute("longname_name", StdString("Characteristic longitude of mesh faces."), &face_x); 601 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &face_x); 602 SuperClassWriter::addVariable(face_y, NC_FLOAT, dim0); 603 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &face_y); 604 SuperClassWriter::addAttribute("longname_name", StdString("Characteristic latitude of mesh faces."), &face_y); 605 SuperClassWriter::addAttribute("units", StdString("degrees_north"), &face_y); 606 dim0.clear(); 607 dim0.push_back(dimFace); 608 dim0.push_back(dimVertex); 609 SuperClassWriter::addVariable(face_nodes, NC_INT, dim0); 610 SuperClassWriter::addAttribute("cf_role", StdString("face_node_connectivity"), &face_nodes); 611 SuperClassWriter::addAttribute("long_name", StdString("Maps every face to its corner nodes."), &face_nodes); 612 SuperClassWriter::addAttribute("start_index", 0, &face_nodes); 613 dim0.clear(); 614 dim0.push_back(dimFace); 615 dim0.push_back(dimVertex); 616 SuperClassWriter::addVariable(face_edges, NC_INT, dim0); 617 SuperClassWriter::addAttribute("cf_role", StdString("face_edge_connectivity"), &face_edges); 618 SuperClassWriter::addAttribute("long_name", StdString("Maps every face to its edges."), &face_edges); 619 SuperClassWriter::addAttribute("start_index", 0, &face_edges); 620 dim0.clear(); 621 dim0.push_back(dimEdge); 622 dim0.push_back(dimTwo); 623 SuperClassWriter::addVariable(edge_faces, NC_INT, dim0); 624 SuperClassWriter::addAttribute("cf_role", StdString("edge_face connectivity"), &edge_faces); 625 SuperClassWriter::addAttribute("long_name", StdString("neighbor faces for edges"), &edge_faces); 626 SuperClassWriter::addAttribute("start_index", 0, &edge_faces); 627 SuperClassWriter::addAttribute("_FillValue", -999, &edge_faces); 628 SuperClassWriter::addAttribute("comment", StdString("missing neighbor faces are indicated using _FillValue"), &edge_faces); 629 dim0.clear(); 630 dim0.push_back(dimFace); 631 dim0.push_back(dimVertex); 632 SuperClassWriter::addVariable(face_faces, NC_INT, dim0); 633 SuperClassWriter::addAttribute("cf_role", StdString("face_face connectivity"), &face_faces); 634 SuperClassWriter::addAttribute("long_name", StdString("Indicates which other faces neighbor each face"), &face_faces); 635 SuperClassWriter::addAttribute("start_index", 0, &face_faces); 636 SuperClassWriter::addAttribute("flag_values", -1, &face_faces); 637 SuperClassWriter::addAttribute("flag_meanings", StdString("out_of_mesh"), &face_faces); 591 SuperClassWriter::addAttribute("face_coordinates", face_x + " " + face_y, &domainName); 592 SuperClassWriter::addAttribute("face_node_connectivity", face_nodes, &domainName); 593 SuperClassWriter::addDimension(dimFace, domain->ni_glo); 594 SuperClassWriter::addDimension(dimVertex, domain->nvertex); 595 dim0.clear(); 596 dim0.push_back(dimFace); 597 SuperClassWriter::addVariable(face_x, NC_FLOAT, dim0); 598 SuperClassWriter::addAttribute("standard_name", StdString("longitude"), &face_x); 599 SuperClassWriter::addAttribute("long_name", StdString("Characteristic longitude of mesh faces."), &face_x); 600 SuperClassWriter::addAttribute("units", StdString("degrees_east"), &face_x); 601 SuperClassWriter::addVariable(face_y, NC_FLOAT, dim0); 602 SuperClassWriter::addAttribute("standard_name", StdString("latitude"), &face_y); 603 SuperClassWriter::addAttribute("long_name", StdString("Characteristic latitude of mesh faces."), &face_y); 604 SuperClassWriter::addAttribute("units", StdString("degrees_north"), &face_y); 605 dim0.clear(); 606 dim0.push_back(dimFace); 607 dim0.push_back(dimVertex); 608 SuperClassWriter::addVariable(face_nodes, NC_INT, dim0); 609 SuperClassWriter::addAttribute("cf_role", StdString("face_node_connectivity"), &face_nodes); 610 SuperClassWriter::addAttribute("long_name", StdString("Maps every face to its corner nodes."), &face_nodes); 611 SuperClassWriter::addAttribute("start_index", 0, &face_nodes); 612 dim0.clear(); 613 dim0.push_back(dimFace); 614 dim0.push_back(dimVertex); 615 SuperClassWriter::addVariable(face_edges, NC_INT, dim0); 616 SuperClassWriter::addAttribute("cf_role", StdString("face_edge_connectivity"), &face_edges); 617 SuperClassWriter::addAttribute("long_name", StdString("Maps every face to its edges."), &face_edges); 618 SuperClassWriter::addAttribute("start_index", 0, &face_edges); 619 dim0.clear(); 620 dim0.push_back(dimEdge); 621 dim0.push_back(dimTwo); 622 SuperClassWriter::addVariable(edge_faces, NC_INT, dim0); 623 SuperClassWriter::addAttribute("cf_role", StdString("edge_face connectivity"), &edge_faces); 624 SuperClassWriter::addAttribute("long_name", StdString("neighbor faces for edges"), &edge_faces); 625 SuperClassWriter::addAttribute("start_index", 0, &edge_faces); 626 SuperClassWriter::addAttribute("_FillValue", -999, &edge_faces); 627 SuperClassWriter::addAttribute("comment", StdString("missing neighbor faces are indicated using _FillValue"), &edge_faces); 628 dim0.clear(); 629 dim0.push_back(dimFace); 630 dim0.push_back(dimVertex); 631 SuperClassWriter::addVariable(face_faces, NC_INT, dim0); 632 SuperClassWriter::addAttribute("cf_role", StdString("face_face connectivity"), &face_faces); 633 SuperClassWriter::addAttribute("long_name", StdString("Indicates which other faces neighbor each face"), &face_faces); 634 SuperClassWriter::addAttribute("start_index", 0, &face_faces); 635 SuperClassWriter::addAttribute("flag_values", -1, &face_faces); 636 SuperClassWriter::addAttribute("flag_meanings", StdString("out_of_mesh"), &face_faces); 638 637 } // domain->nvertex > 2 639 638 640 639 SuperClassWriter::definition_end(); 641 640 642 std::vector<StdSize> start (1) ;643 std::vector<StdSize> count (1) ;644 if (domain->isEmpty())645 {646 start[0]=0;647 count[0]=0;648 }649 else650 {651 start[0]=domain->zoom_ibegin_srv-domain->global_zoom_ibegin;652 count[0]=domain->zoom_ni_srv;653 }641 std::vector<StdSize> startEdges(1) ; 642 std::vector<StdSize> countEdges(1) ; 643 std::vector<StdSize> startNodes(1) ; 644 std::vector<StdSize> countNodes(1) ; 645 std::vector<StdSize> startFaces(1) ; 646 std::vector<StdSize> countFaces(1) ; 647 std::vector<StdSize> startEdgeNodes(2) ; 648 std::vector<StdSize> countEdgeNodes(2) ; 649 std::vector<StdSize> startEdgeFaces(2) ; 650 std::vector<StdSize> countEdgeFaces(2) ; 651 std::vector<StdSize> startFaceConctv(2) ; 652 std::vector<StdSize> countFaceConctv(2) ; 654 653 655 654 if (!isWrittenDomain(domid)) … … 657 656 if (domain->nvertex == 1) 658 657 { 659 SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &start, &count); 660 SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &start, &count); 658 if (domain->isEmpty()) 659 { 660 startNodes[0]=0 ; 661 countNodes[0]=0 ; 662 } 663 else 664 { 665 startNodes[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 666 countNodes[0] = domain->zoom_ni_srv ; 667 } 668 669 SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &startNodes, &countNodes); 670 SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &startNodes, &countNodes); 661 671 } 662 672 else if (domain->nvertex == 2) 663 { 664 SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0); 665 SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0); 666 SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0); 667 SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0); 668 SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes); 669 } 673 { 674 if (domain->isEmpty()) 675 { 676 startEdges[0]=0 ; 677 countEdges[0]=0 ; 678 startNodes[0]=0 ; 679 countNodes[0]=0 ; 680 startEdgeNodes[0]=0; 681 startEdgeNodes[1]=0; 682 countEdgeNodes[0]=0; 683 countEdgeNodes[1]=0; 684 685 } 686 else 687 { 688 startEdges[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 689 countEdges[0] = domain->zoom_ni_srv ; 690 startNodes[0] = domain->mesh->node_start; 691 countNodes[0] = domain->mesh->node_count; 692 startEdgeNodes[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 693 startEdgeNodes[1] = 0; 694 countEdgeNodes[0] = domain->zoom_ni_srv; 695 countEdgeNodes[1]= 2; 696 } 697 SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &startNodes, &countNodes); 698 SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &startNodes, &countNodes); 699 SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges); 700 SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges); 701 SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes); 702 } 670 703 else 671 704 { 672 SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0); 673 SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0); 674 SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0); 675 SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0); 676 SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes); 677 SuperClassWriter::writeData(domain->mesh->face_lat, face_y, isCollective, 0); 678 SuperClassWriter::writeData(domain->mesh->face_lon, face_x, isCollective, 0); 679 SuperClassWriter::writeData(domain->mesh->face_nodes, face_nodes); 680 SuperClassWriter::writeData(domain->mesh->face_edges, face_edges); 681 SuperClassWriter::writeData(domain->mesh->edge_faces, edge_faces); 682 SuperClassWriter::writeData(domain->mesh->face_faces, face_faces); 705 if (domain->isEmpty()) 706 { 707 startFaces[0] = 0 ; 708 countFaces[0] = 0 ; 709 startNodes[0] = 0; 710 countNodes[0] = 0; 711 startEdges[0] = 0; 712 countEdges[0] = 0; 713 startEdgeFaces[0] = 0; 714 startEdgeFaces[1] = 0; 715 countEdgeFaces[0] = 0; 716 countEdgeFaces[1] = 0; 717 startFaceConctv[0] = 0; 718 startFaceConctv[1] = 0; 719 countFaceConctv[0] = 0; 720 countFaceConctv[1] = 0; 721 } 722 else 723 { 724 startFaces[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 725 countFaces[0] = domain->zoom_ni_srv ; 726 startNodes[0] = domain->mesh->node_start; 727 countNodes[0] = domain->mesh->node_count; 728 startEdges[0] = domain->mesh->edge_start; 729 countEdges[0] = domain->mesh->edge_count; 730 startEdgeNodes[0] = domain->mesh->edge_start; 731 startEdgeNodes[1] = 0; 732 countEdgeNodes[0] = domain->mesh->edge_count; 733 countEdgeNodes[1]= 2; 734 startEdgeFaces[0] = domain->mesh->edge_start; 735 startEdgeFaces[1]= 0; 736 countEdgeFaces[0] = domain->mesh->edge_count; 737 countEdgeFaces[1]= 2; 738 startFaceConctv[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 739 startFaceConctv[1] = 0; 740 countFaceConctv[0] = domain->zoom_ni_srv; 741 countFaceConctv[1] = domain->nvertex; 742 } 743 SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &startNodes, &countNodes); 744 SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &startNodes, &countNodes); 745 SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges); 746 SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges); 747 SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes); 748 SuperClassWriter::writeData(domain->mesh->face_lat, face_y, isCollective, 0, &startFaces, &countFaces); 749 SuperClassWriter::writeData(domain->mesh->face_lon, face_x, isCollective, 0, &startFaces, &countFaces); 750 SuperClassWriter::writeData(domain->mesh->face_nodes, face_nodes, isCollective, 0, &startFaceConctv, &countFaceConctv); 751 SuperClassWriter::writeData(domain->mesh->face_edges, face_edges, isCollective, 0, &startFaceConctv, &countFaceConctv); 752 SuperClassWriter::writeData(domain->mesh->edge_faces, edge_faces, isCollective, 0, &startEdgeFaces, &countEdgeFaces); 753 SuperClassWriter::writeData(domain->mesh->face_faces, face_faces, isCollective, 0, &startFaceConctv, &countFaceConctv); 683 754 } 684 755 setWrittenDomain(domid); … … 686 757 else 687 758 { 688 if (domain->nvertex == 1)689 {690 if ( (!domain->mesh->edgesAreWritten) && (!domain->mesh->facesAreWritten) )691 {692 SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0);693 SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0);694 }695 }696 759 if (domain->nvertex == 2) 697 760 { 698 if (!domain->mesh->facesAreWritten) 699 { 700 if (!domain->mesh->nodesAreWritten) 701 { 702 SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0); 703 SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0); 704 } 705 SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0); 706 SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0); 707 SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes); 708 } 761 startEdges[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 762 countEdges[0] = domain->zoom_ni_srv ; 763 startEdgeNodes[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 764 startEdgeNodes[1] = 0; 765 countEdgeNodes[0] = domain->zoom_ni_srv; 766 countEdgeNodes[1]= 2; 767 SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges); 768 SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges); 769 SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes); 709 770 } 710 771 if (domain->nvertex > 2) 711 772 { 773 712 774 if (!domain->mesh->edgesAreWritten) 713 775 { 714 if (!domain->mesh->nodesAreWritten) 715 { 716 SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0); 717 SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0); 718 } 719 SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0); 720 SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0); 721 SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes); 776 startEdges[0] = domain->mesh->edge_start; 777 countEdges[0] = domain->mesh->edge_count; 778 startEdgeNodes[0] = domain->mesh->edge_start; 779 startEdgeNodes[1] = 0; 780 countEdgeNodes[0] = domain->mesh->edge_count; 781 countEdgeNodes[1]= 2; 782 SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges); 783 SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges); 784 SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes); 722 785 } 723 SuperClassWriter::writeData(domain->mesh->face_lat, face_y, isCollective, 0); 724 SuperClassWriter::writeData(domain->mesh->face_lon, face_x, isCollective, 0); 725 SuperClassWriter::writeData(domain->mesh->face_nodes, face_nodes); 726 SuperClassWriter::writeData(domain->mesh->face_edges, face_edges); 727 SuperClassWriter::writeData(domain->mesh->edge_faces, edge_faces); 728 SuperClassWriter::writeData(domain->mesh->face_faces, face_faces); 786 startFaces[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 787 countFaces[0] = domain->zoom_ni_srv; 788 startEdgeFaces[0] = domain->mesh->edge_start; 789 startEdgeFaces[1]= 0; 790 countEdgeFaces[0] = domain->mesh->edge_count; 791 countEdgeFaces[1]= 2; 792 startFaceConctv[0] = domain->zoom_ibegin_srv-domain->global_zoom_ibegin; 793 startFaceConctv[1] = 0; 794 countFaceConctv[0] = domain->zoom_ni_srv; 795 countFaceConctv[1]= domain->nvertex; 796 SuperClassWriter::writeData(domain->mesh->face_lat, face_y, isCollective, 0, &startFaces, &countFaces); 797 SuperClassWriter::writeData(domain->mesh->face_lon, face_x, isCollective, 0, &startFaces, &countFaces); 798 SuperClassWriter::writeData(domain->mesh->face_nodes, face_nodes, isCollective, 0, &startFaceConctv, &countFaceConctv); 799 SuperClassWriter::writeData(domain->mesh->face_edges, face_edges, isCollective, 0, &startFaceConctv, &countFaceConctv); 800 SuperClassWriter::writeData(domain->mesh->edge_faces, edge_faces, isCollective, 0, &startEdgeFaces, &countEdgeFaces); 801 SuperClassWriter::writeData(domain->mesh->face_faces, face_faces, isCollective, 0, &startFaceConctv, &countFaceConctv); 729 802 } 730 803 }// isWrittenDomain … … 754 827 msg.append(context->getId()); msg.append("\n"); 755 828 msg.append(e.what()); 756 ERROR("CNc4DataOutput::writeUnstructuredDomain (CDomain* domain)", << msg);829 ERROR("CNc4DataOutput::writeUnstructuredDomainUgrid(CDomain* domain)", << msg); 757 830 } 758 831
Note: See TracChangeset
for help on using the changeset viewer.