@@ -386,6 +386,68 @@ def _to_25_7_6(params_as_dict):
386386 return remove_entity_bucket_field (params_as_dict = params_as_dict )
387387
388388
389+ def _to_25_7_7 (params_as_dict ):
390+ """
391+ 1. Reset frequency and frequency_offset to defaults for steady simulations
392+ 2. Remove invalid output fields based on transition model
393+ """
394+
395+ # 1. Handle frequency settings in steady simulations
396+ if params_as_dict .get ("time_stepping" , {}).get ("type_name" ) == "Steady" :
397+ outputs = params_as_dict .get ("outputs" ) or []
398+ for output in outputs :
399+ # Output types that have frequency/frequency_offset settings
400+ if output .get ("output_type" ) in [
401+ "VolumeOutput" ,
402+ "TimeAverageVolumeOutput" ,
403+ "SurfaceOutput" ,
404+ "TimeAverageSurfaceOutput" ,
405+ "SliceOutput" ,
406+ "TimeAverageSliceOutput" ,
407+ "IsosurfaceOutput" ,
408+ "TimeAverageIsosurfaceOutput" ,
409+ "SurfaceSliceOutput" ,
410+ ]:
411+ # Reset to defaults: frequency=-1, frequency_offset=0
412+ if "frequency" in output :
413+ output ["frequency" ] = - 1
414+ if "frequency_offset" in output :
415+ output ["frequency_offset" ] = 0
416+
417+ # 2. Remove invalid output fields based on transition model
418+ # Get transition model type from models
419+ transition_model_type = "None"
420+ models = params_as_dict .get ("models" ) or []
421+ for model in models :
422+ if model .get ("type" ) == "Fluid" :
423+ transition_solver = model .get ("transition_model_solver" ) or {}
424+ transition_model_type = transition_solver .get ("type_name" )
425+ break
426+
427+ # If transition model is None or not found, remove transition-specific fields
428+ if transition_model_type == "None" :
429+ transition_output_fields = [
430+ "residualTransition" ,
431+ "solutionTransition" ,
432+ "linearResidualTransition" ,
433+ ]
434+
435+ outputs = params_as_dict .get ("outputs" ) or []
436+ for output in outputs :
437+ if output .get ("output_type" ) in ["AeroAcousticOutput" , "StreamlineOutput" ]:
438+ continue
439+ if "output_fields" in output :
440+ output_fields = output ["output_fields" ]
441+ if isinstance (output_fields , dict ) and "items" in output_fields :
442+ items = output_fields ["items" ]
443+ # Remove invalid fields
444+ output_fields ["items" ] = [
445+ field for field in items if field not in transition_output_fields
446+ ]
447+
448+ return params_as_dict
449+
450+
389451VERSION_MILESTONES = [
390452 (Flow360Version ("24.11.1" ), _to_24_11_1 ),
391453 (Flow360Version ("24.11.7" ), _to_24_11_7 ),
@@ -400,6 +462,7 @@ def _to_25_7_6(params_as_dict):
400462 (Flow360Version ("25.6.6" ), _to_25_6_6 ),
401463 (Flow360Version ("25.7.2" ), _to_25_7_2 ),
402464 (Flow360Version ("25.7.6" ), _to_25_7_6 ),
465+ (Flow360Version ("25.7.7" ), _to_25_7_7 ),
403466] # A list of the Python API version tuple with there corresponding updaters.
404467
405468
0 commit comments