- 
                Notifications
    
You must be signed in to change notification settings  - Fork 903
 
[WIP] Multizone adjoints for turbomachinery #2446
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from 6 commits
98989f7
              6082eac
              b3267b6
              c459ce9
              4a58b8c
              1614784
              d43fef5
              6c9de92
              0e03ead
              ae2f001
              32956c4
              435bea6
              912aeea
              a0bfb53
              1303145
              File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | 
|---|---|---|
| 
          
            
          
           | 
    @@ -1048,6 +1048,11 @@ void CConfig::SetPointersNull() { | |
| nBlades = nullptr; | ||
| FreeStreamTurboNormal = nullptr; | ||
| 
     | 
||
| /*--- Turbomachinery Objective Functions ---*/ | ||
| EntropyGeneration = nullptr; | ||
| TotalPressureLoss = nullptr; | ||
| KineticEnergyLoss = nullptr; | ||
| 
     | 
||
| top_optim_kernels = nullptr; | ||
| top_optim_kernel_params = nullptr; | ||
| top_optim_filter_radius = nullptr; | ||
| 
          
            
          
           | 
    @@ -3413,8 +3418,17 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i | |
| 
     | 
||
| /*--- Using default frequency of 250 for all files when steady, and 1 for unsteady. ---*/ | ||
| for (auto iVolumeFreq = 0; iVolumeFreq < nVolumeOutputFrequencies; iVolumeFreq++){ | ||
| VolumeOutputFrequencies[iVolumeFreq] = Time_Domain ? 1 : 250; | ||
| if (Multizone_Problem && DiscreteAdjoint) { | ||
| VolumeOutputFrequencies[iVolumeFreq] = nOuterIter; | ||
| } | ||
| else { | ||
| VolumeOutputFrequencies[iVolumeFreq] = Time_Domain ? 1 : 250; | ||
| } | ||
| } | ||
| } else if (Multizone_Problem && DiscreteAdjoint) { | ||
| SU2_MPI::Error(string("OUTPUT_WRT_FREQ cannot be specified for this solver " | ||
| "(writing of restart and sensitivity files not possible for multizone discrete adjoint during runtime yet).\n" | ||
| "Please remove this option from the config file, output files will be written when solver finalizes.\n"), CURRENT_FUNCTION); | ||
| 
         
      Comment on lines
    
      +3479
     to 
      +3480
    
   
  There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hmmm I'm pretty sure it is possible There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is one for @oleburghardt There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes and no, writing the files is fine, but the continuation of the multi-zone discrete adjoint solver is erratic. My guess is that some indices aren't cleared properly before re-recording the tape. (Writing adjoint solution variables to file only, without re-recording at all and without sensitivities, might give us some hints.)  | 
||
| } else if (nVolumeOutputFrequencies < nVolumeOutputFiles) { | ||
| /*--- If there are fewer frequencies than files, repeat the last frequency. | ||
| * This is useful to define 1 frequency for the restart file and 1 frequency for all the visualization files. ---*/ | ||
| 
          
            
          
           | 
    @@ -6056,6 +6070,11 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) { | |
| Marker_CfgFile_ZoneInterface[iMarker_CfgFile] = YES; | ||
| } | ||
| 
     | 
||
| /*--- Allocate memory for turbomachinery objective functions ---*/ | ||
| EntropyGeneration = new su2double[nZone] (); | ||
| TotalPressureLoss = new su2double[nZone] (); | ||
| KineticEnergyLoss = new su2double[nZone] (); | ||
| 
     | 
||
| /*--- Identification of Turbomachinery markers and flag them---*/ | ||
| 
     | 
||
| for (iMarker_CfgFile = 0; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++) { | ||
| 
          
            
          
           | 
    @@ -8364,6 +8383,10 @@ CConfig::~CConfig() { | |
| 
     | 
||
| delete [] nBlades; | ||
| delete [] FreeStreamTurboNormal; | ||
| 
     | 
||
| delete [] EntropyGeneration; | ||
| delete [] TotalPressureLoss; | ||
| delete [] KineticEnergyLoss; | ||
| } | ||
| 
     | 
||
| string CConfig::GetFilename(string filename, const string& ext, int timeIter) const { | ||
| 
          
            
          
           | 
    @@ -8541,6 +8564,9 @@ string CConfig::GetObjFunc_Extension(string val_filename) const { | |
| case TOPOL_DISCRETENESS: AdjExt = "_topdisc"; break; | ||
| case TOPOL_COMPLIANCE: AdjExt = "_topcomp"; break; | ||
| case STRESS_PENALTY: AdjExt = "_stress"; break; | ||
| case ENTROPY_GENERATION: AdjExt = "_entg"; break; | ||
| case TOTAL_PRESSURE_LOSS: AdjExt = "_tot_press_loss"; break; | ||
| case KINETIC_ENERGY_LOSS: AdjExt = "_kin_en_loss"; break; | ||
| } | ||
| } | ||
| else{ | ||
| 
          
            
          
           | 
    ||
| Original file line number | Diff line number | Diff line change | 
|---|---|---|
| 
          
            
          
           | 
    @@ -672,11 +672,12 @@ void CFVMFlowSolverBase<V, R>::ComputeVorticityAndStrainMag(const CConfig& confi | |
| StrainMag(iPoint) = sqrt(2.0*StrainMag(iPoint)); | ||
| AD::SetPreaccOut(StrainMag(iPoint)); | ||
| 
     | 
||
| AD::EndPreacc(); | ||
| 
     | 
||
| /*--- Max is not differentiable, so we not register them for preacc. ---*/ | ||
                
       | 
||
| strainMax = max(strainMax, StrainMag(iPoint)); | ||
| omegaMax = max(omegaMax, GeometryToolbox::Norm(3, Vorticity)); | ||
| 
     | 
||
| AD::EndPreacc(); | ||
| } | ||
| END_SU2_OMP_FOR | ||
| 
     | 
||
| 
          
            
          
           | 
    ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.