@@ -373,6 +373,68 @@ def _to_25_7_6(params_as_dict):
373373 return remove_entity_bucket_field (params_as_dict = params_as_dict )
374374
375375
376+ def _to_25_7_7 (params_as_dict ):
377+ """
378+ 1. Reset frequency and frequency_offset to defaults for steady simulations
379+ 2. Remove invalid output fields based on transition model
380+ """
381+
382+ # 1. Handle frequency settings in steady simulations
383+ if params_as_dict .get ("time_stepping" , {}).get ("type_name" ) == "Steady" :
384+ outputs = params_as_dict .get ("outputs" ) or []
385+ for output in outputs :
386+ # Output types that have frequency/frequency_offset settings
387+ if output .get ("output_type" ) in [
388+ "VolumeOutput" ,
389+ "TimeAverageVolumeOutput" ,
390+ "SurfaceOutput" ,
391+ "TimeAverageSurfaceOutput" ,
392+ "SliceOutput" ,
393+ "TimeAverageSliceOutput" ,
394+ "IsosurfaceOutput" ,
395+ "TimeAverageIsosurfaceOutput" ,
396+ "SurfaceSliceOutput" ,
397+ ]:
398+ # Reset to defaults: frequency=-1, frequency_offset=0
399+ if "frequency" in output :
400+ output ["frequency" ] = - 1
401+ if "frequency_offset" in output :
402+ output ["frequency_offset" ] = 0
403+
404+ # 2. Remove invalid output fields based on transition model
405+ # Get transition model type from models
406+ transition_model_type = "None"
407+ models = params_as_dict .get ("models" ) or []
408+ for model in models :
409+ if model .get ("type" ) == "Fluid" :
410+ transition_solver = model .get ("transition_model_solver" ) or {}
411+ transition_model_type = transition_solver .get ("type_name" )
412+ break
413+
414+ # If transition model is None or not found, remove transition-specific fields
415+ if transition_model_type == "None" :
416+ transition_output_fields = [
417+ "residualTransition" ,
418+ "solutionTransition" ,
419+ "linearResidualTransition" ,
420+ ]
421+
422+ outputs = params_as_dict .get ("outputs" ) or []
423+ for output in outputs :
424+ if output .get ("output_type" ) in ["AeroAcousticOutput" , "StreamlineOutput" ]:
425+ continue
426+ if "output_fields" in output :
427+ output_fields = output ["output_fields" ]
428+ if isinstance (output_fields , dict ) and "items" in output_fields :
429+ items = output_fields ["items" ]
430+ # Remove invalid fields
431+ output_fields ["items" ] = [
432+ field for field in items if field not in transition_output_fields
433+ ]
434+
435+ return params_as_dict
436+
437+
376438VERSION_MILESTONES = [
377439 (Flow360Version ("24.11.1" ), _to_24_11_1 ),
378440 (Flow360Version ("24.11.7" ), _to_24_11_7 ),
@@ -386,7 +448,12 @@ def _to_25_7_6(params_as_dict):
386448 (Flow360Version ("25.6.5" ), _to_25_6_5 ),
387449 (Flow360Version ("25.6.6" ), _to_25_6_6 ),
388450 (Flow360Version ("25.7.2" ), _to_25_7_2 ),
451+ < << << << HEAD
389452 (Flow360Version ("25.8.0b4" ), _to_25_7_6 ),
453+ == == == =
454+ (Flow360Version ("25.7.6" ), _to_25_7_6 ),
455+ (Flow360Version ("25.7.7" ), _to_25_7_7 ),
456+ > >> >> >> 72 c81eec ([FXC - 4006 ][FXC - 4053 ][25.7 ] Add validation for transition model output fields and output frequency settings (#1587))
390457] # A list of the Python API version tuple with there corresponding updaters.
391458
392459
0 commit comments