<!-- BaNnErBlUrFlE-BoDy-start -->
<!-- Preheader Text : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;height:0px;max-height:0px;opacity:0;overflow:hidden;">
 On 9 Apr 2024, at 4: 19 PM, Carl-Johan Thore <carljohanthore@ gmail. com> wrote:  ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍
</div>
<!-- Preheader Text : END -->

<!-- Email Banner : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;height:0px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerStart</div>

<!--[if ((ie)|(mso))]>
  <table border="0" cellspacing="0" cellpadding="0" width="100%" style="padding: 16px 0px 16px 0px; direction: ltr" ><tr><td>
    <table border="0" cellspacing="0" cellpadding="0" style="padding: 0px 10px 5px 6px; width: 100%; border-radius:4px; border-top:4px solid #90a4ae;background-color:#D0D8DC;"><tr><td valign="top">
      <table align="left" border="0" cellspacing="0" cellpadding="0" style="padding: 4px 8px 4px 8px">
        <tr><td style="color:#000000; font-family: 'Arial', sans-serif; font-weight:bold; font-size:14px; direction: ltr">
          This Message Is From an External Sender
        </td></tr>
        <tr><td style="color:#000000; font-weight:normal; font-family: 'Arial', sans-serif; font-size:12px; direction: ltr">
          This message came from outside your organization.
        </td></tr>

      </table>

    </td></tr></table>
  </td></tr></table>
<![endif]-->

<![if !((ie)|(mso))]>
  <div dir="ltr"  id="pfptBannerg9jrbcg" style="all: revert !important; display:block !important; text-align: left !important; margin:16px 0px 16px 0px !important; padding:8px 16px 8px 16px !important; border-radius: 4px !important; min-width: 200px !important; background-color: #D0D8DC !important; background-color: #D0D8DC; border-top: 4px solid #90a4ae !important; border-top: 4px solid #90a4ae;">
    <div id="pfptBannerg9jrbcg" style="all: unset !important; float:left !important; display:block !important; margin: 0px 0px 1px 0px !important; max-width: 600px !important;">
      <div id="pfptBannerg9jrbcg" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #D0D8DC !important; color:#000000 !important; color:#000000; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-weight:bold !important; font-weight:bold; font-size:14px !important; line-height:18px !important; line-height:18px">
        This Message Is From an External Sender
      </div>
      <div id="pfptBannerg9jrbcg" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #D0D8DC !important; color:#000000 !important; color:#000000; font-weight:normal; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-size:12px !important; line-height:18px !important; line-height:18px; margin-top:2px !important;">
This message came from outside your organization.
      </div>

    </div>

    <div style="clear: both !important; display: block !important; visibility: hidden !important; line-height: 0 !important; font-size: 0.01px !important; height: 0px"> </div>
  </div>
<![endif]>

<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;height:0px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerEnd</div>
<!-- Email Banner : END -->

<!-- BaNnErBlUrFlE-BoDy-end -->
<html><head><!-- BaNnErBlUrFlE-HeAdEr-start -->
<style>
  #pfptBannerg9jrbcg { all: revert !important; display: block !important; 
    visibility: visible !important; opacity: 1 !important; 
    background-color: #D0D8DC !important; 
    max-width: none !important; max-height: none !important }
  .pfptPrimaryButtong9jrbcg:hover, .pfptPrimaryButtong9jrbcg:focus {
    background-color: #b4c1c7 !important; }
  .pfptPrimaryButtong9jrbcg:active {
    background-color: #90a4ae !important; }
</style>

<!-- BaNnErBlUrFlE-HeAdEr-end -->
<meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><br><div><blockquote type="cite"><div>On 9 Apr 2024, at 4:19 PM, Carl-Johan Thore <carljohanthore@gmail.com> wrote:</div><br class="Apple-interchange-newline"><div><meta charset="UTF-8"><div dir="ltr" id="pfptBannerws0ab7o" style="color-scheme: revert !important; writing-mode: revert !important; -webkit-ruby-position: revert !important; color: revert !important; font-family: revert !important; font-feature-settings: revert !important; font-kerning: revert !important; font-optical-sizing: revert !important; font-palette: revert !important; font-size: revert !important; font-size-adjust: revert !important; font-stretch: revert !important; font-style: revert !important; font-synthesis-small-caps: revert !important; font-synthesis-style: revert !important; font-synthesis-weight: revert !important; font-variant-alternates: revert !important; font-variant-caps: revert !important; font-variant-east-asian: revert !important; font-variant-emoji: revert !important; font-variant-ligatures: revert !important; font-variant-numeric: revert !important; font-variant-position: revert !important; font-variation-settings: revert !important; font-weight: revert !important; text-orientation: revert !important; text-rendering: revert !important; zoom: revert !important; -webkit-font-smoothing: revert !important; -webkit-locale: revert !important; -webkit-text-size-adjust: revert !important; -webkit-text-zoom: revert !important; letter-spacing: revert !important; text-autospace: revert !important; text-spacing-trim: revert !important; accent-color: revert !important; align-content: revert !important; align-items: revert !important; align-self: revert !important; alignment-baseline: revert !important; alt: revert !important; animation-composition: revert !important; animation: revert !important; animation-timeline: revert !important; appearance: revert !important; aspect-ratio: revert !important; backface-visibility: revert !important; background-attachment: revert !important; background-blend-mode: revert !important; background-image: revert !important; background-position: revert !important; background-repeat: revert !important; background-size: revert !important; baseline-shift: revert !important; block-step-insert: revert !important; block-step-size: revert !important; border-collapse: revert !important; border-image: revert !important; box-sizing: revert !important; break-after: revert !important; break-before: revert !important; break-inside: revert !important; buffered-rendering: revert !important; caption-side: revert !important; caret-color: revert !important; clear: revert !important; clip: revert !important; clip-path: revert !important; clip-rule: revert !important; color-interpolation: revert !important; color-interpolation-filters: revert !important; column-count: revert !important; column-fill: revert !important; column-gap: revert !important; column-rule-color: revert !important; column-rule-style: revert !important; column-rule-width: revert !important; column-span: revert !important; column-width: revert !important; contain: revert !important; container-name: revert !important; container-type: revert !important; content: revert !important; content-visibility: revert !important; counter-increment: revert !important; counter-reset: revert !important; counter-set: revert !important; cursor: revert !important; cx: revert !important; cy: revert !important; dominant-baseline: revert !important; empty-cells: revert !important; fill: revert !important; fill-opacity: revert !important; fill-rule: revert !important; filter: revert !important; flex: revert !important; flex-flow: revert !important; float: revert !important; flood-color: revert !important; flood-opacity: revert !important; glyph-orientation-horizontal: revert !important; glyph-orientation-vertical: revert !important; grid: revert !important; grid-column-end: revert !important; grid-column-start: revert !important; grid-row-end: revert !important; grid-row-start: revert !important; hanging-punctuation: revert !important; hyphenate-character: revert !important; hyphens: revert !important; image-orientation: revert !important; image-rendering: revert !important; input-security: revert !important; isolation: revert !important; justify-content: revert !important; justify-items: revert !important; justify-self: revert !important; kerning: revert !important; lighting-color: revert !important; line-break: revert !important; line-height: revert !important; list-style: revert !important; margin-trim: revert !important; marker: revert !important; mask: revert !important; mask-size: revert !important; mask-type: revert !important; masonry-auto-flow: revert !important; math-style: revert !important; mix-blend-mode: revert !important; object-fit: revert !important; object-position: revert !important; offset-anchor: revert !important; offset-distance: revert !important; offset-path: revert !important; offset-position: revert !important; offset-rotate: revert !important; order: revert !important; orphans: revert !important; outline: revert !important; outline-offset: revert !important; overflow-anchor: revert !important; overflow-wrap: revert !important; overflow: revert !important; page: revert !important; paint-order: revert !important; perspective: revert !important; perspective-origin: revert !important; pointer-events: revert !important; position: revert !important; print-color-adjust: revert !important; quotes: revert !important; r: revert !important; resize: revert !important; rotate: revert !important; row-gap: revert !important; rx: revert !important; ry: revert !important; scale: revert !important; scroll-behavior: revert !important; scroll-snap-align: revert !important; scroll-snap-stop: revert !important; scroll-snap-type: revert !important; scroll-timeline: revert !important; scrollbar-color: revert !important; scrollbar-gutter: revert !important; scrollbar-width: revert !important; shape-image-threshold: revert !important; shape-margin: revert !important; shape-outside: revert !important; shape-rendering: revert !important; size: revert !important; speak-as: revert !important; stop-color: revert !important; stop-opacity: revert !important; stroke: revert !important; stroke-color: revert !important; stroke-dasharray: revert !important; stroke-dashoffset: revert !important; stroke-linecap: revert !important; stroke-linejoin: revert !important; stroke-miterlimit: revert !important; stroke-opacity: revert !important; stroke-width: revert !important; tab-size: revert !important; table-layout: revert !important; text-align: left !important; text-align-last: revert !important; text-anchor: revert !important; text-box-edge: revert !important; text-box-trim: revert !important; text-decoration-color: revert !important; text-decoration: revert !important; text-decoration-skip-ink: revert !important; text-decoration-style: revert !important; text-decoration-thickness: revert !important; text-emphasis-color: revert !important; text-emphasis-position: revert !important; text-emphasis-style: revert !important; text-group-align: revert !important; text-indent: revert !important; text-justify: revert !important; text-overflow: revert !important; text-shadow: revert !important; text-transform: revert !important; text-underline-offset: revert !important; text-underline-position: revert !important; text-wrap: revert !important; touch-action: revert !important; transform: revert !important; transform-box: revert !important; transform-origin: revert !important; transform-style: revert !important; transition: revert !important; translate: revert !important; vector-effect: revert !important; vertical-align: revert !important; view-timeline: revert !important; view-transition-name: revert !important; white-space: revert !important; widows: revert !important; will-change: revert !important; word-break: revert !important; x: revert !important; y: revert !important; z-index: revert !important; -apple-color-filter: revert !important; -apple-pay-button-style: revert !important; -apple-pay-button-type: revert !important; -internal-text-autosizing-status: revert !important; border-spacing: revert !important; -webkit-box-align: revert !important; -webkit-box-decoration-break: revert !important; -webkit-box-direction: revert !important; -webkit-box-flex: revert !important; -webkit-box-flex-group: revert !important; -webkit-box-lines: revert !important; -webkit-box-ordinal-group: revert !important; -webkit-box-orient: revert !important; -webkit-box-pack: revert !important; -webkit-box-reflect: revert !important; -webkit-column-axis: revert !important; -webkit-column-progression: revert !important; -webkit-cursor-visibility: revert !important; -webkit-font-size-delta: revert !important; -webkit-hyphenate-limit-after: revert !important; -webkit-hyphenate-limit-before: revert !important; -webkit-hyphenate-limit-lines: revert !important; -webkit-initial-letter: revert !important; -webkit-line-align: revert !important; -webkit-line-box-contain: revert !important; -webkit-line-clamp: revert !important; -webkit-line-grid: revert !important; -webkit-line-snap: revert !important; -webkit-marquee-direction: revert !important; -webkit-marquee-increment: revert !important; -webkit-marquee-repetition: revert !important; -webkit-marquee-speed: revert !important; -webkit-marquee-style: revert !important; -webkit-nbsp-mode: revert !important; -webkit-rtl-ordering: revert !important; -webkit-text-decorations-in-effect: revert !important; -webkit-text-fill-color: revert !important; -webkit-text-security: revert !important; -webkit-text-stroke-color: revert !important; -webkit-text-stroke-width: revert !important; -webkit-user-drag: revert !important; -webkit-user-modify: revert !important; -webkit-user-select: revert !important; word-spacing: revert !important; backdrop-filter: revert !important; background-clip: revert !important; background-origin: revert !important; box-shadow: revert !important; mask-composite: revert !important; mask-mode: revert !important; text-combine-upright: revert !important; -webkit-backdrop-filter: revert !important; -webkit-background-clip: revert !important; -webkit-background-origin: revert !important; -webkit-box-shadow: revert !important; -webkit-mask: revert !important; -webkit-mask-composite: revert !important; -webkit-mask-source-type: revert !important; -webkit-text-combine: revert !important; display: block !important; visibility: revert !important; opacity: revert !important; background-color: rgb(208, 216, 220) !important; block-size: revert !important; border-block: revert !important; border-bottom-color: revert !important; border-bottom-style: revert !important; border-bottom-width: revert !important; border-end-end-radius: revert !important; border-end-start-radius: revert !important; border-inline: revert !important; border-left-color: revert !important; border-left-style: revert !important; border-left-width: revert !important; border-right-color: revert !important; border-right-style: revert !important; border-right-width: revert !important; border-start-end-radius: revert !important; border-start-start-radius: revert !important; inset: revert !important; contain-intrinsic-block-size: revert !important; contain-intrinsic-size: revert !important; contain-intrinsic-inline-size: revert !important; height: revert !important; inline-size: revert !important; inset-block: revert !important; inset-inline: revert !important; margin-block: revert !important; margin-inline: revert !important; max-block-size: revert !important; max-height: revert !important; max-inline-size: revert !important; max-width: revert !important; min-block-size: revert !important; min-height: revert !important; min-inline-size: revert !important; overscroll-behavior-block: revert !important; overscroll-behavior-inline: revert !important; overscroll-behavior: revert !important; padding-block: revert !important; padding-inline: revert !important; scroll-margin-block: revert !important; scroll-margin: revert !important; scroll-margin-inline: revert !important; scroll-padding-block: revert !important; scroll-padding: revert !important; scroll-padding-inline: revert !important; width: revert !important; margin: 16px 0px !important; padding: 8px 16px !important; border-radius: 4px !important; min-width: 200px !important; border-top-width: 4px !important; border-top-style: solid !important; border-top-color: rgb(144, 164, 174) !important;"><div id="pfptBannerws0ab7o" style="color-scheme: unset !important; writing-mode: unset !important; -webkit-ruby-position: unset !important; color: unset !important; font-family: unset !important; font-feature-settings: unset !important; font-kerning: unset !important; font-optical-sizing: unset !important; font-palette: unset !important; font-size: unset !important; font-size-adjust: unset !important; font-stretch: unset !important; font-style: unset !important; font-synthesis-small-caps: unset !important; font-synthesis-style: unset !important; font-synthesis-weight: unset !important; font-variant-alternates: unset !important; font-variant-caps: unset !important; font-variant-east-asian: unset !important; font-variant-emoji: unset !important; font-variant-ligatures: unset !important; font-variant-numeric: unset !important; font-variant-position: unset !important; font-variation-settings: unset !important; font-weight: unset !important; text-orientation: unset !important; text-rendering: unset !important; zoom: unset !important; -webkit-font-smoothing: unset !important; -webkit-locale: unset !important; -webkit-text-size-adjust: unset !important; -webkit-text-zoom: unset !important; letter-spacing: unset !important; text-autospace: unset !important; text-spacing-trim: unset !important; accent-color: unset !important; align-content: unset !important; align-items: unset !important; align-self: unset !important; alignment-baseline: unset !important; alt: unset !important; animation-composition: unset !important; animation: unset !important; animation-timeline: unset !important; appearance: unset !important; aspect-ratio: unset !important; backface-visibility: unset !important; background: unset !important; background-blend-mode: unset !important; baseline-shift: unset !important; block-step-insert: unset !important; block-step-size: unset !important; border-collapse: unset !important; border: unset !important; box-sizing: unset !important; break-after: unset !important; break-before: unset !important; break-inside: unset !important; buffered-rendering: unset !important; caption-side: unset !important; caret-color: unset !important; clear: unset !important; clip: unset !important; clip-path: unset !important; clip-rule: unset !important; color-interpolation: unset !important; color-interpolation-filters: unset !important; column-count: unset !important; column-fill: unset !important; column-gap: unset !important; column-rule-color: unset !important; column-rule-style: unset !important; column-rule-width: unset !important; column-span: unset !important; column-width: unset !important; contain: unset !important; container-name: unset !important; container-type: unset !important; content: unset !important; content-visibility: unset !important; counter-increment: unset !important; counter-reset: unset !important; counter-set: unset !important; cursor: unset !important; cx: unset !important; cy: unset !important; dominant-baseline: unset !important; empty-cells: unset !important; fill: unset !important; fill-opacity: unset !important; fill-rule: unset !important; filter: unset !important; flex: unset !important; flex-flow: unset !important; float: left !important; flood-color: unset !important; flood-opacity: unset !important; glyph-orientation-horizontal: unset !important; glyph-orientation-vertical: unset !important; grid: unset !important; grid-column-end: unset !important; grid-column-start: unset !important; grid-row-end: unset !important; grid-row-start: unset !important; hanging-punctuation: unset !important; hyphenate-character: unset !important; hyphens: unset !important; image-orientation: unset !important; image-rendering: unset !important; input-security: unset !important; isolation: unset !important; justify-content: unset !important; justify-items: unset !important; justify-self: unset !important; kerning: unset !important; lighting-color: unset !important; line-break: unset !important; line-height: unset !important; list-style: unset !important; margin-trim: unset !important; marker: unset !important; mask: unset !important; mask-size: unset !important; mask-type: unset !important; masonry-auto-flow: unset !important; math-style: unset !important; mix-blend-mode: unset !important; object-fit: unset !important; object-position: unset !important; offset-anchor: unset !important; offset-distance: unset !important; offset-path: unset !important; offset-position: unset !important; offset-rotate: unset !important; order: unset !important; orphans: unset !important; outline: unset !important; outline-offset: unset !important; overflow-anchor: unset !important; overflow-wrap: unset !important; overflow: unset !important; page: unset !important; paint-order: unset !important; perspective: unset !important; perspective-origin: unset !important; pointer-events: unset !important; position: unset !important; print-color-adjust: unset !important; quotes: unset !important; r: unset !important; resize: unset !important; rotate: unset !important; row-gap: unset !important; rx: unset !important; ry: unset !important; scale: unset !important; scroll-behavior: unset !important; scroll-snap-align: unset !important; scroll-snap-stop: unset !important; scroll-snap-type: unset !important; scroll-timeline: unset !important; scrollbar-color: unset !important; scrollbar-gutter: unset !important; scrollbar-width: unset !important; shape-image-threshold: unset !important; shape-margin: unset !important; shape-outside: unset !important; shape-rendering: unset !important; size: unset !important; speak-as: unset !important; stop-color: unset !important; stop-opacity: unset !important; stroke: unset !important; stroke-color: unset !important; stroke-dasharray: unset !important; stroke-dashoffset: unset !important; stroke-linecap: unset !important; stroke-linejoin: unset !important; stroke-miterlimit: unset !important; stroke-opacity: unset !important; stroke-width: unset !important; tab-size: unset !important; table-layout: unset !important; text-align: unset !important; text-align-last: unset !important; text-anchor: unset !important; text-box-edge: unset !important; text-box-trim: unset !important; text-decoration-color: unset !important; text-decoration: unset !important; text-decoration-skip-ink: unset !important; text-decoration-style: unset !important; text-decoration-thickness: unset !important; text-emphasis-color: unset !important; text-emphasis-position: unset !important; text-emphasis-style: unset !important; text-group-align: unset !important; text-indent: unset !important; text-justify: unset !important; text-overflow: unset !important; text-shadow: unset !important; text-transform: unset !important; text-underline-offset: unset !important; text-underline-position: unset !important; text-wrap: unset !important; touch-action: unset !important; transform: unset !important; transform-box: unset !important; transform-origin: unset !important; transform-style: unset !important; transition: unset !important; translate: unset !important; vector-effect: unset !important; vertical-align: unset !important; view-timeline: unset !important; view-transition-name: unset !important; white-space: unset !important; widows: unset !important; will-change: unset !important; word-break: unset !important; x: unset !important; y: unset !important; z-index: unset !important; -apple-color-filter: unset !important; -apple-pay-button-style: unset !important; -apple-pay-button-type: unset !important; -internal-text-autosizing-status: unset !important; border-spacing: unset !important; -webkit-box-align: unset !important; -webkit-box-decoration-break: unset !important; -webkit-box-direction: unset !important; -webkit-box-flex: unset !important; -webkit-box-flex-group: unset !important; -webkit-box-lines: unset !important; -webkit-box-ordinal-group: unset !important; -webkit-box-orient: unset !important; -webkit-box-pack: unset !important; -webkit-box-reflect: unset !important; -webkit-column-axis: unset !important; -webkit-column-progression: unset !important; -webkit-cursor-visibility: unset !important; -webkit-font-size-delta: unset !important; -webkit-hyphenate-limit-after: unset !important; -webkit-hyphenate-limit-before: unset !important; -webkit-hyphenate-limit-lines: unset !important; -webkit-initial-letter: unset !important; -webkit-line-align: unset !important; -webkit-line-box-contain: unset !important; -webkit-line-clamp: unset !important; -webkit-line-grid: unset !important; -webkit-line-snap: unset !important; -webkit-marquee-direction: unset !important; -webkit-marquee-increment: unset !important; -webkit-marquee-repetition: unset !important; -webkit-marquee-speed: unset !important; -webkit-marquee-style: unset !important; -webkit-nbsp-mode: unset !important; -webkit-rtl-ordering: unset !important; -webkit-text-decorations-in-effect: unset !important; -webkit-text-fill-color: unset !important; -webkit-text-security: unset !important; -webkit-text-stroke-color: unset !important; -webkit-text-stroke-width: unset !important; -webkit-user-drag: unset !important; -webkit-user-modify: unset !important; -webkit-user-select: unset !important; word-spacing: unset !important; backdrop-filter: unset !important; box-shadow: unset !important; mask-composite: unset !important; mask-mode: unset !important; text-combine-upright: unset !important; -webkit-backdrop-filter: unset !important; -webkit-background-clip: unset !important; -webkit-background-origin: unset !important; -webkit-box-shadow: unset !important; -webkit-mask: unset !important; -webkit-mask-composite: unset !important; -webkit-mask-source-type: unset !important; -webkit-text-combine: unset !important; display: block !important; visibility: unset !important; opacity: unset !important; block-size: unset !important; border-block: unset !important; border-radius: unset !important; border-end-end-radius: unset !important; border-end-start-radius: unset !important; border-inline: unset !important; border-start-end-radius: unset !important; border-start-start-radius: unset !important; inset: unset !important; contain-intrinsic-block-size: unset !important; contain-intrinsic-size: unset !important; contain-intrinsic-inline-size: unset !important; height: unset !important; inline-size: unset !important; inset-block: unset !important; inset-inline: unset !important; margin-block: unset !important; margin-inline: unset !important; max-block-size: unset !important; max-height: unset !important; max-inline-size: unset !important; min-block-size: unset !important; min-height: unset !important; min-inline-size: unset !important; min-width: unset !important; overscroll-behavior-block: unset !important; overscroll-behavior-inline: unset !important; overscroll-behavior: unset !important; padding-block: unset !important; padding: unset !important; padding-inline: unset !important; scroll-margin-block: unset !important; scroll-margin: unset !important; scroll-margin-inline: unset !important; scroll-padding-block: unset !important; scroll-padding: unset !important; scroll-padding-inline: unset !important; width: unset !important; margin: 0px 0px 1px !important; max-width: 600px !important;"><div id="pfptBannerws0ab7o" style="color-scheme: unset !important; writing-mode: unset !important; -webkit-ruby-position: unset !important; font-family: Arial, sans-serif !important; font-feature-settings: unset !important; font-kerning: unset !important; font-optical-sizing: unset !important; font-palette: unset !important; font-size: 14px !important; font-size-adjust: unset !important; font-stretch: unset !important; font-style: unset !important; font-synthesis-small-caps: unset !important; font-synthesis-style: unset !important; font-synthesis-weight: unset !important; font-variant-alternates: unset !important; font-variant-caps: unset !important; font-variant-east-asian: unset !important; font-variant-ligatures: unset !important; font-variant-numeric: unset !important; font-variant-position: unset !important; font-variation-settings: unset !important; font-weight: bold !important; text-orientation: unset !important; text-rendering: unset !important; zoom: unset !important; -webkit-font-smoothing: unset !important; -webkit-locale: unset !important; -webkit-text-zoom: unset !important; letter-spacing: unset !important; accent-color: unset !important; align-content: unset !important; align-items: unset !important; align-self: unset !important; alignment-baseline: unset !important; alt: unset !important; animation-composition: unset !important; animation: unset !important; appearance: unset !important; aspect-ratio: unset !important; backface-visibility: unset !important; background-attachment: unset !important; background-blend-mode: unset !important; background-image: unset !important; background-position: unset !important; background-repeat: unset !important; background-size: unset !important; baseline-shift: unset !important; border-collapse: unset !important; border: unset !important; box-sizing: unset !important; break-after: unset !important; break-before: unset !important; break-inside: unset !important; buffered-rendering: unset !important; caption-side: unset !important; caret-color: unset !important; clear: unset !important; clip: unset !important; clip-path: unset !important; clip-rule: unset !important; color-interpolation: unset !important; color-interpolation-filters: unset !important; column-count: unset !important; column-fill: unset !important; column-gap: unset !important; column-rule-color: unset !important; column-rule-style: unset !important; column-rule-width: unset !important; column-span: unset !important; column-width: unset !important; contain: unset !important; container-name: unset !important; container-type: unset !important; content: unset !important; counter-increment: unset !important; counter-reset: unset !important; counter-set: unset !important; cursor: unset !important; cx: unset !important; cy: unset !important; dominant-baseline: unset !important; empty-cells: unset !important; fill: unset !important; fill-opacity: unset !important; fill-rule: unset !important; filter: unset !important; flex: unset !important; flex-flow: unset !important; float: unset !important; flood-color: unset !important; flood-opacity: unset !important; glyph-orientation-horizontal: unset !important; glyph-orientation-vertical: unset !important; grid: unset !important; grid-column-end: unset !important; grid-column-start: unset !important; grid-row-end: unset !important; grid-row-start: unset !important; hanging-punctuation: unset !important; hyphenate-character: unset !important; hyphens: unset !important; image-orientation: unset !important; image-rendering: unset !important; isolation: unset !important; justify-content: unset !important; justify-items: unset !important; justify-self: unset !important; kerning: unset !important; lighting-color: unset !important; line-break: unset !important; line-height: 18px !important; list-style: unset !important; margin-trim: unset !important; marker: unset !important; mask: unset !important; mask-type: unset !important; math-style: unset !important; mix-blend-mode: unset !important; object-fit: unset !important; object-position: unset !important; offset-anchor: unset !important; offset-distance: unset !important; offset-path: unset !important; offset-position: unset !important; offset-rotate: unset !important; order: unset !important; orphans: unset !important; outline: unset !important; outline-offset: unset !important; overflow-wrap: unset !important; overflow: unset !important; page: unset !important; paint-order: unset !important; perspective: unset !important; perspective-origin: unset !important; pointer-events: unset !important; position: unset !important; print-color-adjust: unset !important; quotes: unset !important; r: unset !important; resize: unset !important; rotate: unset !important; row-gap: unset !important; rx: unset !important; ry: unset !important; scale: unset !important; scroll-behavior: unset !important; scroll-snap-align: unset !important; scroll-snap-stop: unset !important; scroll-snap-type: unset !important; shape-image-threshold: unset !important; shape-margin: unset !important; shape-outside: unset !important; shape-rendering: unset !important; size: unset !important; speak-as: unset !important; stop-color: unset !important; stop-opacity: unset !important; stroke: unset !important; stroke-color: unset !important; stroke-dasharray: unset !important; stroke-dashoffset: unset !important; stroke-linecap: unset !important; stroke-linejoin: unset !important; stroke-miterlimit: unset !important; stroke-opacity: unset !important; stroke-width: unset !important; tab-size: unset !important; table-layout: unset !important; text-align: unset !important; text-align-last: unset !important; text-anchor: unset !important; text-decoration-color: unset !important; text-decoration: unset !important; text-decoration-skip-ink: unset !important; text-decoration-style: unset !important; text-decoration-thickness: unset !important; text-emphasis-color: unset !important; text-emphasis-position: unset !important; text-emphasis-style: unset !important; text-indent: unset !important; text-overflow: unset !important; text-shadow: unset !important; text-transform: unset !important; text-underline-offset: unset !important; text-underline-position: unset !important; text-wrap: unset !important; touch-action: unset !important; transform: unset !important; transform-box: unset !important; transform-origin: unset !important; transform-style: unset !important; transition: unset !important; translate: unset !important; vector-effect: unset !important; vertical-align: unset !important; white-space: unset !important; widows: unset !important; will-change: unset !important; word-break: unset !important; x: unset !important; y: unset !important; z-index: unset !important; -apple-color-filter: unset !important; -apple-pay-button-style: unset !important; -apple-pay-button-type: unset !important; border-spacing: unset !important; -webkit-box-align: unset !important; -webkit-box-decoration-break: unset !important; -webkit-box-direction: unset !important; -webkit-box-flex: unset !important; -webkit-box-flex-group: unset !important; -webkit-box-lines: unset !important; -webkit-box-ordinal-group: unset !important; -webkit-box-orient: unset !important; -webkit-box-pack: unset !important; -webkit-box-reflect: unset !important; -webkit-column-axis: unset !important; -webkit-column-progression: unset !important; -webkit-cursor-visibility: unset !important; -webkit-hyphenate-limit-after: unset !important; -webkit-hyphenate-limit-before: unset !important; -webkit-hyphenate-limit-lines: unset !important; -webkit-initial-letter: unset !important; -webkit-line-align: unset !important; -webkit-line-box-contain: unset !important; -webkit-line-clamp: unset !important; -webkit-line-grid: unset !important; -webkit-line-snap: unset !important; -webkit-nbsp-mode: unset !important; -webkit-rtl-ordering: unset !important; -webkit-text-decorations-in-effect: unset !important; -webkit-text-fill-color: unset !important; -webkit-text-security: unset !important; -webkit-text-stroke-color: unset !important; -webkit-text-stroke-width: unset !important; -webkit-user-drag: unset !important; -webkit-user-modify: unset !important; -webkit-user-select: unset !important; word-spacing: unset !important; background-clip: unset !important; background-origin: unset !important; box-shadow: unset !important; mask-composite: unset !important; mask-mode: unset !important; text-combine-upright: unset !important; -webkit-backdrop-filter: unset !important; -webkit-background-clip: unset !important; -webkit-background-origin: unset !important; -webkit-box-shadow: unset !important; mask-size: unset !important; -webkit-mask: unset !important; -webkit-mask-composite: unset !important; -webkit-mask-source-type: unset !important; -webkit-text-combine: unset !important; display: block !important; visibility: visible !important; opacity: unset !important; background-color: rgb(208, 216, 220) !important; block-size: unset !important; border-block: unset !important; border-radius: unset !important; border-end-end-radius: unset !important; border-end-start-radius: unset !important; border-inline: unset !important; border-start-end-radius: unset !important; border-start-start-radius: unset !important; inset: unset !important; contain-intrinsic-block-size: unset !important; contain-intrinsic-size: unset !important; contain-intrinsic-inline-size: unset !important; height: unset !important; inline-size: unset !important; inset-block: unset !important; inset-inline: unset !important; margin-block: unset !important; margin: unset !important; margin-inline: unset !important; max-block-size: unset !important; max-height: unset !important; max-inline-size: unset !important; max-width: unset !important; min-block-size: unset !important; min-height: unset !important; min-inline-size: unset !important; min-width: unset !important; overscroll-behavior-block: unset !important; overscroll-behavior-inline: unset !important; overscroll-behavior: unset !important; padding-block: unset !important; padding: unset !important; padding-inline: unset !important; scroll-margin-block: unset !important; scroll-margin: unset !important; scroll-margin-inline: unset !important; scroll-padding-block: unset !important; scroll-padding: unset !important; scroll-padding-inline: unset !important; width: unset !important;">This Message Is From an External Sender</div><div id="pfptBannerws0ab7o" style="color-scheme: unset !important; writing-mode: unset !important; -webkit-ruby-position: unset !important; font-family: Arial, sans-serif !important; font-feature-settings: unset !important; font-kerning: unset !important; font-optical-sizing: unset !important; font-palette: unset !important; font-size: 12px !important; font-size-adjust: unset !important; font-stretch: unset !important; font-style: unset !important; font-synthesis-small-caps: unset !important; font-synthesis-style: unset !important; font-synthesis-weight: unset !important; font-variant-alternates: unset !important; font-variant-caps: unset !important; font-variant-east-asian: unset !important; font-variant-ligatures: unset !important; font-variant-numeric: unset !important; font-variant-position: unset !important; font-variation-settings: unset !important; font-weight: unset !important; text-orientation: unset !important; text-rendering: unset !important; zoom: unset !important; -webkit-font-smoothing: unset !important; -webkit-locale: unset !important; -webkit-text-zoom: unset !important; letter-spacing: unset !important; accent-color: unset !important; align-content: unset !important; align-items: unset !important; align-self: unset !important; alignment-baseline: unset !important; alt: unset !important; animation-composition: unset !important; animation: unset !important; appearance: unset !important; aspect-ratio: unset !important; backface-visibility: unset !important; background-attachment: unset !important; background-blend-mode: unset !important; background-image: unset !important; background-position: unset !important; background-repeat: unset !important; background-size: unset !important; baseline-shift: unset !important; border-collapse: unset !important; border: unset !important; box-sizing: unset !important; break-after: unset !important; break-before: unset !important; break-inside: unset !important; buffered-rendering: unset !important; caption-side: unset !important; caret-color: unset !important; clear: unset !important; clip: unset !important; clip-path: unset !important; clip-rule: unset !important; color-interpolation: unset !important; color-interpolation-filters: unset !important; column-count: unset !important; column-fill: unset !important; column-gap: unset !important; column-rule-color: unset !important; column-rule-style: unset !important; column-rule-width: unset !important; column-span: unset !important; column-width: unset !important; contain: unset !important; container-name: unset !important; container-type: unset !important; content: unset !important; counter-increment: unset !important; counter-reset: unset !important; counter-set: unset !important; cursor: unset !important; cx: unset !important; cy: unset !important; dominant-baseline: unset !important; empty-cells: unset !important; fill: unset !important; fill-opacity: unset !important; fill-rule: unset !important; filter: unset !important; flex: unset !important; flex-flow: unset !important; float: unset !important; flood-color: unset !important; flood-opacity: unset !important; glyph-orientation-horizontal: unset !important; glyph-orientation-vertical: unset !important; grid: unset !important; grid-column-end: unset !important; grid-column-start: unset !important; grid-row-end: unset !important; grid-row-start: unset !important; hanging-punctuation: unset !important; hyphenate-character: unset !important; hyphens: unset !important; image-orientation: unset !important; image-rendering: unset !important; isolation: unset !important; justify-content: unset !important; justify-items: unset !important; justify-self: unset !important; kerning: unset !important; lighting-color: unset !important; line-break: unset !important; line-height: 18px !important; list-style: unset !important; margin-trim: unset !important; marker: unset !important; mask: unset !important; mask-type: unset !important; math-style: unset !important; mix-blend-mode: unset !important; object-fit: unset !important; object-position: unset !important; offset-anchor: unset !important; offset-distance: unset !important; offset-path: unset !important; offset-position: unset !important; offset-rotate: unset !important; order: unset !important; orphans: unset !important; outline: unset !important; outline-offset: unset !important; overflow-wrap: unset !important; overflow: unset !important; page: unset !important; paint-order: unset !important; perspective: unset !important; perspective-origin: unset !important; pointer-events: unset !important; position: unset !important; print-color-adjust: unset !important; quotes: unset !important; r: unset !important; resize: unset !important; rotate: unset !important; row-gap: unset !important; rx: unset !important; ry: unset !important; scale: unset !important; scroll-behavior: unset !important; scroll-snap-align: unset !important; scroll-snap-stop: unset !important; scroll-snap-type: unset !important; shape-image-threshold: unset !important; shape-margin: unset !important; shape-outside: unset !important; shape-rendering: unset !important; size: unset !important; speak-as: unset !important; stop-color: unset !important; stop-opacity: unset !important; stroke: unset !important; stroke-color: unset !important; stroke-dasharray: unset !important; stroke-dashoffset: unset !important; stroke-linecap: unset !important; stroke-linejoin: unset !important; stroke-miterlimit: unset !important; stroke-opacity: unset !important; stroke-width: unset !important; tab-size: unset !important; table-layout: unset !important; text-align: unset !important; text-align-last: unset !important; text-anchor: unset !important; text-decoration-color: unset !important; text-decoration: unset !important; text-decoration-skip-ink: unset !important; text-decoration-style: unset !important; text-decoration-thickness: unset !important; text-emphasis-color: unset !important; text-emphasis-position: unset !important; text-emphasis-style: unset !important; text-indent: unset !important; text-overflow: unset !important; text-shadow: unset !important; text-transform: unset !important; text-underline-offset: unset !important; text-underline-position: unset !important; text-wrap: unset !important; touch-action: unset !important; transform: unset !important; transform-box: unset !important; transform-origin: unset !important; transform-style: unset !important; transition: unset !important; translate: unset !important; vector-effect: unset !important; vertical-align: unset !important; white-space: unset !important; widows: unset !important; will-change: unset !important; word-break: unset !important; x: unset !important; y: unset !important; z-index: unset !important; -apple-color-filter: unset !important; -apple-pay-button-style: unset !important; -apple-pay-button-type: unset !important; border-spacing: unset !important; -webkit-box-align: unset !important; -webkit-box-decoration-break: unset !important; -webkit-box-direction: unset !important; -webkit-box-flex: unset !important; -webkit-box-flex-group: unset !important; -webkit-box-lines: unset !important; -webkit-box-ordinal-group: unset !important; -webkit-box-orient: unset !important; -webkit-box-pack: unset !important; -webkit-box-reflect: unset !important; -webkit-column-axis: unset !important; -webkit-column-progression: unset !important; -webkit-cursor-visibility: unset !important; -webkit-hyphenate-limit-after: unset !important; -webkit-hyphenate-limit-before: unset !important; -webkit-hyphenate-limit-lines: unset !important; -webkit-initial-letter: unset !important; -webkit-line-align: unset !important; -webkit-line-box-contain: unset !important; -webkit-line-clamp: unset !important; -webkit-line-grid: unset !important; -webkit-line-snap: unset !important; -webkit-nbsp-mode: unset !important; -webkit-rtl-ordering: unset !important; -webkit-text-decorations-in-effect: unset !important; -webkit-text-fill-color: unset !important; -webkit-text-security: unset !important; -webkit-text-stroke-color: unset !important; -webkit-text-stroke-width: unset !important; -webkit-user-drag: unset !important; -webkit-user-modify: unset !important; -webkit-user-select: unset !important; word-spacing: unset !important; background-clip: unset !important; background-origin: unset !important; box-shadow: unset !important; mask-composite: unset !important; mask-mode: unset !important; text-combine-upright: unset !important; -webkit-backdrop-filter: unset !important; -webkit-background-clip: unset !important; -webkit-background-origin: unset !important; -webkit-box-shadow: unset !important; mask-size: unset !important; -webkit-mask: unset !important; -webkit-mask-composite: unset !important; -webkit-mask-source-type: unset !important; -webkit-text-combine: unset !important; display: block !important; visibility: visible !important; opacity: unset !important; background-color: rgb(208, 216, 220) !important; block-size: unset !important; border-block: unset !important; border-radius: unset !important; border-end-end-radius: unset !important; border-end-start-radius: unset !important; border-inline: unset !important; border-start-end-radius: unset !important; border-start-start-radius: unset !important; inset: unset !important; contain-intrinsic-block-size: unset !important; contain-intrinsic-size: unset !important; contain-intrinsic-inline-size: unset !important; height: unset !important; inline-size: unset !important; inset-block: unset !important; inset-inline: unset !important; margin-block: unset !important; margin-bottom: unset !important; margin-inline: unset !important; margin-left: unset !important; margin-right: unset !important; max-block-size: unset !important; max-height: unset !important; max-inline-size: unset !important; max-width: unset !important; min-block-size: unset !important; min-height: unset !important; min-inline-size: unset !important; min-width: unset !important; overscroll-behavior-block: unset !important; overscroll-behavior-inline: unset !important; overscroll-behavior: unset !important; padding-block: unset !important; padding: unset !important; padding-inline: unset !important; scroll-margin-block: unset !important; scroll-margin: unset !important; scroll-margin-inline: unset !important; scroll-padding-block: unset !important; scroll-padding: unset !important; scroll-padding-inline: unset !important; width: unset !important; margin-top: 2px !important;">This message came from outside your organization.</div></div><div style="height: 0px; clear: both !important; display: block !important; visibility: hidden !important; line-height: 0 !important; font-size: 0.01px !important;"></div></div><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div>Thanks for the suggestion. I don't have a factored matrix (and can't really use direct linear solvers) so<span class="Apple-converted-space"> </span><span style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">MatSolveTranspose doesn't seem to be an option. </span></div><div><span style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">I should have mentioned that I've also tried KSPSolveTranspose but that doesn't work with pcredistribute<br></span></div></div></div></blockquote><div><br></div><div>I’m not a frequent PCREDISTRIBUTE user, but it looks like <a href="https://urldefense.us/v3/__https://petsc.org/release/src/ksp/pc/impls/redistribute/redistribute.c.html*line332__;Iw!!G_uCfscf7eWS!bgGlN3dW5g5M98EkZPPaYivRkcXtawYE_jKsdMC0zK2bDy4u1Qy1KOMIcZ-_sBABRkHTzGlKHmAefb8Ozy3XbQ$">https://petsc.org/release/src/ksp/pc/impls/redistribute/redistribute.c.html#line332</a> could be copy/paste’d into PCApplyTranspose_Redistribute() by just changing a MatMult() to MatMultTranspose() and KSPSolve() to KSPSolveTranspose().</div><div>Would you be willing to contribute (and test) this?</div><div>Then, KSPSolveTranspose() — which should be the function you call — will work.</div><div><br></div><div>Thanks,</div><div>Pierre</div><br><blockquote type="cite"><div><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div>/Carl-Johan<br></div></div><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div class="gmail_quote" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div dir="ltr" class="gmail_attr">On Tue, Apr 9, 2024 at 3:59 PM Zhang, Hong <<a href="mailto:hzhang@mcs.anl.gov">hzhang@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div class="msg-7116380009172819183"><div dir="ltr"><div style="font-size: 15px; color: rgb(36, 36, 36);"><span style="background-color: rgb(255, 255, 255);">Carl-Johan</span><span style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">,</span></div><div><span style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">You can use MatSolveTranspose() to solve<span class="Apple-converted-space"> </span></span><span style="font-size: 15px; color: rgb(36, 36, 36); background-color: rgb(255, 255, 255);">A'*x = b</span><span style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">. See petsc/src/ksp/ksp/tutorials/ex79.c</span></div><div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;"><br></div><div><span style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">`MatCreateTranspose()` is used if you only need a matrix that behaves like the transpose, but don't need the storage to be changed, i.e., A and A' share same matrix storage, thus<span class="Apple-converted-space"> </span></span><span style="font-size: 15px; color: rgb(36, 36, 36); background-color: rgb(255, 255, 255);">MatGetRow()<span class="Apple-converted-space"> </span></span><span style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">needs to get columns of A, which is not supported.</span></div><div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;"><br></div><div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">Hong</div><div id="m_-7116380009172819183appendonsend"></div><hr style="display: inline-block; width: 875.84375px;"><div id="m_-7116380009172819183divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size: 11pt;"><b>From:</b><span class="Apple-converted-space"> </span>petsc-users <<a href="mailto:petsc-users-bounces@mcs.anl.gov" target="_blank">petsc-users-bounces@mcs.anl.gov</a>> on behalf of Carl-Johan Thore <<a href="mailto:carljohanthore@gmail.com" target="_blank">carljohanthore@gmail.com</a>><br><b>Sent:</b><span class="Apple-converted-space"> </span>Tuesday, April 9, 2024 6:38 AM<br><b>To:</b><span class="Apple-converted-space"> </span>petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>><br><b>Subject:</b><span class="Apple-converted-space"> </span>[petsc-users] MatCreateTranspose</font><div> </div></div><div><div dir="ltr" id="m_-7116380009172819183x_pfptBannerwyat4vs" style="display: block; text-align: left; margin: 16px 0px; padding: 8px 16px; border-radius: 4px; min-width: 200px; background-color: rgb(208, 216, 220); border-top-width: 4px; border-top-style: solid; border-top-color: rgb(144, 164, 174);"><div id="m_-7116380009172819183x_pfptBannerwyat4vs" style="float: left; display: block; margin: 0px 0px 1px; max-width: 600px;"><div id="m_-7116380009172819183x_pfptBannerwyat4vs" style="display: block; background-color: rgb(208, 216, 220); font-family: Arial, sans-serif; font-weight: bold; font-size: 14px; line-height: 18px;">This Message Is From an External Sender<span class="Apple-converted-space"> </span></div><div id="m_-7116380009172819183x_pfptBannerwyat4vs" style="display: block; background-color: rgb(208, 216, 220); font-weight: normal; font-family: Arial, sans-serif; font-size: 12px; line-height: 18px; margin-top: 2px;">This message came from outside your organization.<span class="Apple-converted-space"> </span></div></div><div style="clear: both; display: block; line-height: 0; font-size: 0.01px; height: 0px;"> </div></div><div dir="ltr">Hi,<br><br>I have a matrix A with transpose A' and would like to solve the linear system A'*x = b using the pcredistribute preconditioner. It seemed like a good idea to use MatCreateTranspose, but this leads to<br><br>[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------<br>[0]PETSC ERROR: No support for this operation for this object type<br>[0]PETSC ERROR: No method getrow for Mat of type transpose<br>[0]PETSC ERROR: See<span class="Apple-converted-space"> </span><a href="https://urldefense.us/v3/__https://petsc.org/release/faq/__;!!G_uCfscf7eWS!bVYrcPfbXSXCcthSH37OClTgnf7RxkizULEW1ZZJ5yYG3-50366x_OFSPmOgGWEcOeFyOmAMSFewAyCnxIUg7K8W_neRPw$" target="_blank">https://petsc.org/release/faq/</a><span class="Apple-converted-space"> </span>for trouble shooting.<br>[0]PETSC ERROR: Petsc Release Version 3.21.0, unknown<br>[0]PETSC ERROR: Configure options COPTFLAGS="-O3 -march=native" CXXOPTFLAGS="-O3 -march=native" --with-fortran-bindings=0 FOPTFLAGS="-O3 -march=native" CUDAOPTFLAGS=-O3 --with-cuda --with-cusp --with-debugging=0 --download-scalapack --download-hdf5 --download-zlib --download-mumps --download-parmetis --download-metis --download-ptscotch --download-hypre --download-spai<br>[0]PETSC ERROR: #1 MatGetRow() at /mnt/c/mathware/petsc/petsc-v3-21-0/src/mat/interface/matrix.c:573<br>[0]PETSC ERROR: #2 PCSetUp_Redistribute() at /mnt/c/mathware/petsc/petsc-v3-21-0/src/ksp/pc/impls/redistribute/redistribute.c:111<br>[0]PETSC ERROR: #3 PCSetUp() at /mnt/c/mathware/petsc/petsc-v3-21-0/src/ksp/pc/interface/precon.c:1079<br>[0]PETSC ERROR: #4 KSPSetUp() at /mnt/c/mathware/petsc/petsc-v3-21-0/src/ksp/ksp/interface/itfunc.c:415<br><br>MatTranspose is a working alternative, but MatCreateTranspose would be preferable. In principle the solution seems straightforward -- just add a getrow method -- but is it, and is it a good idea (performancewise etc)?<br><br>Kind regards,<br>Carl-Johan<span class="Apple-converted-space"> </span></div></div></div></div></blockquote></div></div></blockquote></div><br></body></html>