@@ -89,22 +89,24 @@ def determine_validity(reference_set, reference_symbols, candidate_set, candidat
8989 R = get_exponent_matrix (reference_set , symbols )
9090 C = get_exponent_matrix (candidate_set , symbols )
9191 D = R .col_join (C )
92- valid = False
92+ valid = True
9393 feedback = []
94- more_groups_than_reference_set = len (reference_set ) >= len (candidate_set )
94+ more_groups_than_reference_set = len (reference_set ) > len (candidate_set )
9595 candidate_groups_independent = C .rank () == len (candidate_set )
9696 rank_R_equal_to_rank_D = R .rank () == D .rank ()
9797 rank_C_equal_to_rank_D = C .rank () == D .rank ()
9898 if candidate_symbols .issubset (reference_symbols ):
99- if not more_groups_than_reference_set :
99+ valid = valid and not more_groups_than_reference_set
100+ if more_groups_than_reference_set :
100101 feedback .append (buckingham_pi_feedback_responses ["MORE_GROUPS_THAN_REFERENCE_SET" ])
102+ valid = valid and candidate_groups_independent
101103 if not candidate_groups_independent :
102104 feedback .append (buckingham_pi_feedback_responses ["CANDIDATE_GROUPS_NOT_INDEPENDENT" ](C .rank (), len (candidate_set )))
103105 if rank_R_equal_to_rank_D :
104106 if rank_C_equal_to_rank_D :
105- valid = True
106107 feedback .append (buckingham_pi_feedback_responses ["VALID_CANDIDATE_SET" ])
107108 else :
109+ valid = False
108110 feedback .append (buckingham_pi_feedback_responses ["TOO_FEW_INDEPENDENT_GROUPS" ]("Response" , C .rank (), D .rank ()))
109111 else :
110112 dimensionless_groups = set ()
@@ -117,8 +119,10 @@ def determine_validity(reference_set, reference_symbols, candidate_set, candidat
117119 dimensionless_groups .add (create_power_product (exponents , symbols ))
118120 if len (dimensionless_groups ) > 0 :
119121 feedback .append (buckingham_pi_feedback_responses ["NOT_DIMENSIONLESS" ](dimensionless_groups ))
122+ valid = False
120123 else :
121124 feedback .append (buckingham_pi_feedback_responses ["UNKNOWN_SYMBOL" ](candidate_symbols .difference (reference_symbols )))
125+ valid = False
122126 feedback = [elem .strip () for elem in feedback if len (elem .strip ()) > 0 ]
123127 return valid , "<br>" .join (feedback )
124128
0 commit comments