1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- function model = mttMeasureCausalCompletion(model)
-
- number_of_bonds = mttGetFieldLength(model,'bond') ;
- for i = 1:number_of_bonds
- effort_defined(i) = ~isempty(model.bond(i).effort) ;
- flow_defined(i) = ~isempty(model.bond(i).flow) ;
- end
- partly_defined = effort_defined|flow_defined ;
- fully_defined = effort_defined&flow_defined ;
-
- causal_completion.bonds = number_of_bonds ;
- causal_completion.flows = sum(flow_defined) ;
- causal_completion.efforts = sum(effort_defined) ;
- causal_completion.assignments = sum(partly_defined) ;
-
- unicausal_bonds = 0 ;
- causal_bond = model.bond(fully_defined) ;
- for i = 1:length(causal_bond)
- if causal_bond(i).effort==causal_bond(i).flow
- unicausal_bonds = unicausal_bonds + 1 ;
- end
- end
- causal_completion.unicausal = unicausal_bonds ;
- causal_completion.is_unicausal = causal_completion.assignments==causal_completion.unicausal ;
-
- causal_completion.is_causal = (causal_completion.efforts==causal_completion.bonds) ...
- & (causal_completion.flows==causal_completion.bonds) ;
-
- object_names = mttGetFieldNames(model,'obj') ;
- number_of_objects = length(object_names) ;
-
- for i = 1:number_of_objects
- object_name = object_names{i} ;
- object = getfield(model,'obj',object_name) ;
- if ~isempty(object.abg)
- object = mttMeasureCausalCompletion(object) ;
-
- causal_completion.bonds = causal_completion.bonds + object.causal_completion.bonds ;
- causal_completion.flows = causal_completion.flows + object.causal_completion.flows ;
- causal_completion.efforts = causal_completion.efforts + object.causal_completion.efforts ;
- causal_completion.assignments = causal_completion.assignments + object.causal_completion.assignments ;
- causal_completion.unicausal = causal_completion.unicausal + object.causal_completion.unicausal ;
-
- causal_completion.is_unicausal = causal_completion.is_unicausal & object.causal_completion.is_unicausal ;
- causal_completion.is_causal = causal_completion.is_causal & object.causal_completion.is_causal ;
- end
- end
-
- model.causal_completion = causal_completion ;
-
-
|