Changeset 1201 for XIOS/dev/dev_olga/src/node/field.cpp
- Timestamp:
- 07/07/17 18:17:49 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/node/field.cpp
r1166 r1201 131 131 132 132 CContext* context = CContext::getCurrent(); 133 CContextClient* client = (!context->hasServer) ? context->client : this->file->getContextClient(); 134 135 CEventClient event(getType(), EVENT_ID_UPDATE_DATA); 136 137 map<int, CArray<int,1> >::iterator it; 138 list<CMessage> list_msg; 139 list<CArray<double,1> > list_data; 140 141 if (!grid->doGridHaveDataDistributed()) 133 CContextClient* client = (!context->hasServer) ? context->client : this->file->getContextClient(); 134 135 CEventClient event(getType(), EVENT_ID_UPDATE_DATA); 136 137 map<int, CArray<int,1> >::iterator it; 138 list<CMessage> list_msg; 139 list<CArray<double,1> > list_data; 140 141 if (!grid->doGridHaveDataDistributed()) 142 { 143 if (client->isServerLeader()) 144 { 145 for (it = grid->storeIndex_toSrv.begin(); it != grid->storeIndex_toSrv.end(); it++) 146 { 147 int rank = it->first; 148 CArray<int,1>& index = it->second; 149 150 list_msg.push_back(CMessage()); 151 list_data.push_back(CArray<double,1>(index.numElements())); 152 153 CArray<double,1>& data_tmp = list_data.back(); 154 for (int n = 0; n < data_tmp.numElements(); n++) data_tmp(n) = data(index(n)); 155 156 list_msg.back() << getId() << data_tmp; 157 event.push(rank, 1, list_msg.back()); 158 } 159 client->sendEvent(event); 160 } 161 else client->sendEvent(event); 162 } 163 else 164 { 165 for (it = grid->storeIndex_toSrv.begin(); it != grid->storeIndex_toSrv.end(); it++) 142 166 { 143 if (client->isServerLeader()) 144 { 145 for (it = grid->storeIndex_toSrv.begin(); it != grid->storeIndex_toSrv.end(); it++) 146 { 147 int rank = it->first; 148 CArray<int,1>& index = it->second; 149 150 list_msg.push_back(CMessage()); 151 list_data.push_back(CArray<double,1>(index.numElements())); 152 153 CArray<double,1>& data_tmp = list_data.back(); 154 for (int n = 0; n < data_tmp.numElements(); n++) data_tmp(n) = data(index(n)); 155 156 list_msg.back() << getId() << data_tmp; 157 event.push(rank, 1, list_msg.back()); 158 } 159 client->sendEvent(event); 160 } 161 else client->sendEvent(event); 162 } 163 else 164 { 165 for (it = grid->storeIndex_toSrv.begin(); it != grid->storeIndex_toSrv.end(); it++) 166 { 167 int rank = it->first; 168 CArray<int,1>& index = it->second; 169 170 list_msg.push_back(CMessage()); 171 list_data.push_back(CArray<double,1>(index.numElements())); 172 173 CArray<double,1>& data_tmp = list_data.back(); 174 for (int n = 0; n < data_tmp.numElements(); n++) data_tmp(n) = data(index(n)); 175 176 list_msg.back() << getId() << data_tmp; 177 event.push(rank, grid->nbSenders[0][rank], list_msg.back()); 178 } 179 client->sendEvent(event); 180 } 167 int rank = it->first; 168 CArray<int,1>& index = it->second; 169 170 list_msg.push_back(CMessage()); 171 list_data.push_back(CArray<double,1>(index.numElements())); 172 173 CArray<double,1>& data_tmp = list_data.back(); 174 for (int n = 0; n < data_tmp.numElements(); n++) data_tmp(n) = data(index(n)); 175 176 list_msg.back() << getId() << data_tmp; 177 event.push(rank, grid->nbSenders[0][rank], list_msg.back()); 178 } 179 client->sendEvent(event); 180 } 181 181 182 182 CTimer::get("Field : send data").suspend(); … … 276 276 { 277 277 CContext* context = CContext::getCurrent(); 278 // CContextClient* client = context->client; 278 279 CContextClient* client = (!context->hasServer) ? context->client : this->file->getContextClient(); 279 280 280 281 281 lastDataRequestedFromServer = tsDataRequested; … … 336 336 CContext* context = CContext::getCurrent(); 337 337 CContextClient* client = context->client; 338 // CContextClient* client = (!context->hasServer) ? context->client : this->file->getContextClient(); 338 339 339 340 CEventClient event(getType(), EVENT_ID_READ_DATA_READY); … … 854 855 { 855 856 if (!isReferenceSolvedAndTransformed) solveAllEnabledFieldsAndTransform(); 857 858 const bool detectMissingValues = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 859 const double defaultValue = detectMissingValues ? default_value : (!default_value.isEmpty() ? default_value : 0.0); 860 856 861 CContext* context = CContext::getCurrent(); 857 862 bool hasWriterServer = context->hasServer && !context->hasClient; … … 906 911 if (grid && grid != gridRef && grid->hasTransform()) 907 912 { 908 bool hasMissingValue = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 909 double defaultValue = hasMissingValue ? default_value : (!default_value.isEmpty() ? default_value : 0.0); 910 std::pair<boost::shared_ptr<CFilter>, boost::shared_ptr<CFilter> > filters = CSpatialTransformFilter::buildFilterGraph(gc, gridRef, grid, hasMissingValue, defaultValue); 913 std::pair<boost::shared_ptr<CFilter>, boost::shared_ptr<CFilter> > filters = CSpatialTransformFilter::buildFilterGraph(gc, gridRef, grid, detectMissingValues, defaultValue); 911 914 912 915 filter->connectOutput(filters.first, 0); … … 924 927 instantDataFilter = serverSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, 925 928 freq_offset.isEmpty() ? NoneDu : freq_offset, 926 true)); 929 true, 930 detectMissingValues, defaultValue)); 927 931 else // The data might be passed from the model 928 932 { 929 bool ignoreMissingValue = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 930 double defaultValue = ignoreMissingValue ? default_value : (!default_value.isEmpty() ? default_value : 0.0); 933 if (check_if_active.isEmpty()) check_if_active = false; 931 934 instantDataFilter = clientSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, NoneDu, false, 932 ignoreMissingValue, defaultValue));935 detectMissingValues, defaultValue)); 933 936 } 934 937 } … … 937 940 if (enableOutput && !storeFilter && !fileWriterFilter) 938 941 { 939 if (!read_access.isEmpty() && read_access) 940 { 941 storeFilter = boost::shared_ptr<CStoreFilter>(new CStoreFilter(gc, CContext::getCurrent(), grid)); 942 instantDataFilter->connectOutput(storeFilter, 0); 943 } 944 945 if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write)) 946 { 947 fileWriterFilter = boost::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this)); 948 getTemporalDataFilter(gc, file->output_freq)->connectOutput(fileWriterFilter, 0); 949 } 942 storeFilter = boost::shared_ptr<CStoreFilter>(new CStoreFilter(gc, CContext::getCurrent(), grid, 943 detectMissingValues, defaultValue)); 944 instantDataFilter->connectOutput(storeFilter, 0); 945 } 946 947 if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write)) 948 { 949 fileWriterFilter = boost::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this)); 950 getTemporalDataFilter(gc, file->output_freq)->connectOutput(fileWriterFilter, 0); 950 951 } 951 952 } … … 1001 1002 if (!selfReferenceFilter) 1002 1003 { 1004 const bool detectMissingValues = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 1005 const double defaultValue = detectMissingValues ? default_value : (!default_value.isEmpty() ? default_value : 0.0); 1006 1003 1007 if (file && !file->mode.isEmpty() && file->mode == CFile::mode_attr::read) 1004 1008 { … … 1006 1010 serverSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, 1007 1011 freq_offset.isEmpty() ? NoneDu : freq_offset, 1008 true)); 1012 true, 1013 detectMissingValues, defaultValue)); 1014 1009 1015 selfReferenceFilter = serverSourceFilter; 1010 1016 } … … 1019 1025 if (!clientSourceFilter) 1020 1026 { 1021 bool ignoreMissingValue = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 1022 double defaultValue = ignoreMissingValue ? default_value : (!default_value.isEmpty() ? default_value : 0.0); 1027 if (check_if_active.isEmpty()) check_if_active = false; 1023 1028 clientSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, NoneDu, false, 1024 ignoreMissingValue, defaultValue));1029 detectMissingValues, defaultValue)); 1025 1030 } 1026 1031 … … 1056 1061 freq_offset.setValue(NoneDu); 1057 1062 1058 const bool ignoreMissingValue= (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true);1059 1063 const bool detectMissingValues = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 1064 1060 1065 boost::shared_ptr<CTemporalFilter> temporalFilter(new CTemporalFilter(gc, operation, 1061 1066 CContext::getCurrent()->getCalendar()->getInitDate(), 1062 1067 freq_op, freq_offset, outFreq, 1063 ignoreMissingValue, ignoreMissingValue? default_value : 0.0));1068 detectMissingValues, detectMissingValues ? default_value : 0.0)); 1064 1069 instantDataFilter->connectOutput(temporalFilter, 0); 1065 1070 … … 1096 1101 if (freq_offset.isEmpty()) freq_offset.setValue(NoneDu); 1097 1102 1098 const bool ignoreMissingValue= (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true);1103 const bool detectMissingValues = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 1099 1104 1100 1105 boost::shared_ptr<CTemporalFilter> temporalFilter(new CTemporalFilter(gc, operation, 1101 1106 CContext::getCurrent()->getCalendar()->getInitDate(), 1102 1107 freq_op, freq_offset, outFreq, 1103 ignoreMissingValue, ignoreMissingValue? default_value : 0.0));1108 detectMissingValues, detectMissingValues ? default_value : 0.0)); 1104 1109 selfReferenceFilter->connectOutput(temporalFilter, 0); 1105 1110 return temporalFilter ;
Note: See TracChangeset
for help on using the changeset viewer.