Index: /XIOS/trunk/inputs/REMAP/iodef.xml
===================================================================
--- /XIOS/trunk/inputs/REMAP/iodef.xml (revision 733)
+++ /XIOS/trunk/inputs/REMAP/iodef.xml (revision 734)
@@ -9,5 +9,5 @@
-
+
@@ -22,12 +22,8 @@
-
+
-
-
-
-
-
+
@@ -40,13 +36,12 @@
-
-
+
-
+
@@ -74,4 +69,5 @@
performance
30.0
+ 800000
Index: /XIOS/trunk/src/node/domain.cpp
===================================================================
--- /XIOS/trunk/src/node/domain.cpp (revision 733)
+++ /XIOS/trunk/src/node/domain.cpp (revision 734)
@@ -338,6 +338,6 @@
double latRange = lat_end - lat_start;
- double lonStep = lonRange/double(ni_glo.getValue());
- double latStep = latRange/double(nj_glo.getValue());
+ double lonStep = (1 == ni_glo.getValue()) ? lonRange : lonRange/double(ni_glo.getValue()-1);
+ double latStep = (1 == nj_glo.getValue()) ? latRange : latRange/double(nj_glo.getValue()-1);
// Assign lon value
@@ -423,4 +423,5 @@
int nbClient;
MPI_Comm_size(client->intraComm,&nbClient);
+ it->second->checkValid(this);
this->redistribute(nbClient);
break;
Index: /XIOS/trunk/src/node/generate_rectilinear_domain.cpp
===================================================================
--- /XIOS/trunk/src/node/generate_rectilinear_domain.cpp (revision 733)
+++ /XIOS/trunk/src/node/generate_rectilinear_domain.cpp (revision 734)
@@ -71,21 +71,12 @@
<< "Define only one attribute: 'bounds_lat_start' or 'lat_start'.");
- if (!bounds_lon_start.isEmpty() && !lat_start.isEmpty())
- ERROR("CGenerateRectilinearDomain::checkValid(CDomain* domainDst)",
- << "[ id = " << this->getId() << " , context = '" << CObjectFactory::GetCurrentContextId() << " ] "
- << "Only one latitude boundary attribute or latitude can be used but both 'bounds_lon_start' and 'lat_start' are defined." << std::endl
- << "Define only one pair of attributes: ('bounds_lon_start' and 'bounds_lat_start') or ('lon_start' and 'lat_start').");
-
- if (!bounds_lat_start.isEmpty() && !lon_start.isEmpty())
- ERROR("CGenerateRectilinearDomain::checkValid(CDomain* domainDst)",
- << "[ id = " << this->getId() << " , context = '" << CObjectFactory::GetCurrentContextId() << " ] "
- << "Only one latitude boundary attribute or latitude can be used but both 'bounds_lat_start' and 'lon_start' are defined." << std::endl
- << "Define only one pair of attributes: ('bounds_lon_start' and 'bounds_lat_start') or ('lon_start' and 'lat_start').");
-
- if (bounds_lon_start.isEmpty() && bounds_lat_start.isEmpty() &&
- lon_start.isEmpty() && lat_start.isEmpty())
+ if (bounds_lon_start.isEmpty() && lon_start.isEmpty())
{
bounds_lon_start.setValue(defaultBndsLonStart);
bounds_lon_end.setValue(defaultBndsLonEnd);
+ }
+
+ if (bounds_lat_start.isEmpty() && lat_start.isEmpty())
+ {
bounds_lat_start.setValue(defaultBndsLatStart);
bounds_lat_end.setValue(defaultBndsLatEnd);
@@ -97,5 +88,5 @@
double boundsLonRange = bounds_lon_end - bounds_lon_start;
- double boundsLonStep = boundsLonRange/double(niGlo);
+ double boundsLonStep = boundsLonRange/(double(niGlo));
domainDst->bounds_lon_start = bounds_lon_start;
domainDst->bounds_lon_end = bounds_lon_end;
@@ -109,5 +100,5 @@
double boundsLatRange = bounds_lat_end - bounds_lat_start;
- double boundsLatStep = boundsLatRange/double(njGlo);
+ double boundsLatStep = boundsLatRange/(double(njGlo));
domainDst->bounds_lat_start = bounds_lat_start;
domainDst->bounds_lat_end = bounds_lat_end;
@@ -123,5 +114,5 @@
double lonRange = lon_end - lon_start;
- double lonStep = lonRange/double(niGlo);
+ double lonStep = (1 == niGlo) ? lonRange : lonRange/(double(niGlo)-1);
domainDst->lon_start = lon_start;
domainDst->lon_end = lon_end;
@@ -135,5 +126,5 @@
double latRange = lat_end - lat_start;
- double latStep = latRange/double(njGlo);
+ double latStep = (1 == njGlo) ? latRange : latRange/(double(njGlo)-1);
domainDst->lat_start = lat_start;
domainDst->lat_end = lat_end;
Index: /XIOS/trunk/src/test/test_remap.f90
===================================================================
--- /XIOS/trunk/src/test/test_remap.f90 (revision 733)
+++ /XIOS/trunk/src/test/test_remap.f90 (revision 734)
@@ -129,8 +129,8 @@
DO ts=1,1
-! CALL xios_recv_field("src_field_regular", tmp_field)
+ CALL xios_recv_field("src_field_regular", tmp_field)
CALL xios_update_calendar(ts)
CALL xios_send_field("src_field",src_field)
-! CALL xios_send_field("tmp_field",tmp_field)
+ CALL xios_send_field("tmp_field",tmp_field)
CALL wait_us(5000) ;
ENDDO
Index: /XIOS/trunk/src/transformation/grid_transformation.cpp
===================================================================
--- /XIOS/trunk/src/transformation/grid_transformation.cpp (revision 733)
+++ /XIOS/trunk/src/transformation/grid_transformation.cpp (revision 734)
@@ -54,4 +54,5 @@
CDomain* domain = CDomain::createDomain();
domain->setAttributes(domainSrcTmp[idx]);
+ domain->solveInheritanceTransformation();
domain->checkAttributesOnClient();
domainSrc.push_back(domain);