anchor.diff:              CALL ED_HD_InputOutputSolve(  this_time, p_FAST, calcJacobian &
                                             , ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1) &
                                             , HD_Input(1), p_HD, x_HD_this, xd_HD_this, z_HD_this, OtherSt_HD, y_HD & 
  -                                          , u_ED_Without_SD_HD, MeshMapData , ErrStat, ErrMsg )         
  +                                          , MeshMapData , ErrStat, ErrMsg )         
                  CALL CheckError( ErrStat, ErrMsg  )
               
            ELSE ! Both enabled
  
positive.code:       ELSE         
           calcJacobian = .FALSE.
        END IF
        
        !IF ( p_FAST%CompHydro == Module_HD ) THEN
        !
        !   IF ( p_FAST%CompSub /= Module_SD ) THEN
        !   
        !      CALL ED_HD_InputOutputSolve(  this_time, p_FAST, calcJacobian &
        !                                    , ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1) &
        !                                    , HD_Input(1), p_HD, x_HD_this, xd_HD_this, z_HD_this, OtherSt_HD, y_HD & 
        !                                    , u_ED_Without_SD_HD, MeshMapData , ErrStat, ErrMsg )         
        !         CALL CheckError( ErrStat, ErrMsg  )
        !      
        !   ELSE ! Both enabled
        !      
        !      CALL ED_SD_HD_InputOutputSolve(  this_time, p_FAST, calcJacobian &
        !                                    , ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1) &
        !                                    , SD_Input(1), p_SD, x_SD_this, xd_SD_this, z_SD_this, OtherSt_SD, y_SD & 
        !                                    , HD_Input(1), p_HD, x_HD_this, xd_HD_this, z_HD_this, OtherSt_HD, y_HD & 
        !                                    , u_ED_Without_SD_HD, MeshMapData , ErrStat, ErrMsg )         
        !         CALL CheckError( ErrStat, ErrMsg  )
        !      
        !      
        !   END IF      
        !   
        !ELSEIF ( p_FAST%CompSub == Module_SD ) THEN
        !   
        !   CALL ED_SD_InputOutputSolve(  this_time, p_FAST, calcJacobian &
        !                              , ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1) &
        !                              , SD_Input(1), p_SD, x_SD_this, xd_SD_this, z_SD_this, OtherSt_SD, y_SD & 
        !                              , u_ED_Without_SD_HD, MeshMapData , ErrStat, ErrMsg )         
        !      CALL CheckError( ErrStat, ErrMsg  )
        !
        !ELSE ! no HD or SD coupled to ED
           
           CALL ED_CalcOutput( this_time, ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1), ErrStat, ErrMsg )
              CALL CheckError( ErrStat, 'Message from ED_CalcOutput: '//NewLine//ErrMsg  )    
              
        !END IF
                    
           
        !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  
negative.code:       
        !bjj: note ED_Input(1) may be a sibling mesh of output, but u_ED is not (routine may update something that needs to be shared between siblings)
        ! note: HD_InputSolve, SD_InputSolve, and MAP_InputSolve must be called before ED_InputSolve (so that motions are known for loads mapping)      
        ! note: MeshMapData%u_ED_PlatformPtMesh_2 must have the same Position, RefOrientation, and Elements as ED_Input(1)%PlatformPtMesh [which we need to do differently if RemapFlag changes during simulation]
        
        CALL ED_InputSolve( p_FAST, ED_Input(1), ED_Output(1), y_AD, y_SrvD, y_HD, HD_Input(1), y_MAP, MAP_Input(1), y_SD, SD_Input(1), &
                               y_FEAM, FEAM_Input(1), MeshMapData, ErrStat, ErrMsg )
           CALL CheckError( ErrStat, 'Message from ED_InputSolve: '//NewLine//ErrMsg  )
  
           
  