Browse Source

refine on zoom seems to work ok

Konstantin Ladutenko 3 years ago
parent
commit
fec7f9d209

+ 0 - 16
guiapp/src/components/nearfield/GetNearFieldRefinedSettings.vue

@@ -8,22 +8,6 @@
     <div class="col-xs-grow col-sm">
       <div class="row justify-center items-baseline">
         <div class="col-auto text-center q-py-xs q-pr-md">
-          <div :style="flexRowTitleStyle">y-side resolution</div>
-        </div>
-        <div class="col-xs-grow col-sm">
-          <div class="row justify-xs-center justify-sm-start items-center">
-            <input-with-units
-              v-model:input-result="plotYSideResolution"
-              v-model:is-showing-help="isShowingHelpForInputWithUnits"
-              :initial-expression="plotYSideResolution.toString()"
-              title="points"
-              units=""
-            />
-          </div>
-        </div>
-      </div>
-      <div class="row justify-center items-baseline">
-        <div class="col-auto text-center q-py-xs q-pr-md">
           <div :style="flexRowTitleStyle">relative center</div>
         </div>
         <div class="col-xs-grow col-sm">

+ 41 - 4
guiapp/src/components/nearfield/GetNearFieldSettings.vue

@@ -8,20 +8,45 @@
     <div class="col-xs-grow col-sm">
       <div class="row justify-center items-baseline">
         <div class="col-auto text-center q-py-xs q-pr-md">
-          <div :style="flexRowTitleStyle">side resolution</div>
+          <div :style="flexRowTitleStyle">x-side resolution</div>
+        </div>
+        <div class="col-xs-grow col-sm">
+          <div class="row justify-xs-center justify-sm-start items-center">
+            <div class="col-auto">
+              <input-with-units
+                v-model:input-result="plotXSideResolution"
+                v-model:is-showing-help="isShowingHelpForInputWithUnits"
+                :initial-expression="plotXSideResolution.toString()"
+                title="points"
+                units=""
+              />
+            </div>
+            <div class="col-auto">
+              <q-checkbox v-model="isSquareNearField" size="sm">
+                square
+              </q-checkbox>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="row justify-center items-baseline">
+        <div class="col-auto text-center q-py-xs q-pr-md">
+          <div :style="flexRowTitleStyle">y-side resolution</div>
         </div>
         <div class="col-xs-grow col-sm">
           <div class="row justify-xs-center justify-sm-start items-center">
             <input-with-units
-              v-model:input-result="plotXSideResolution"
+              v-model:input-result="plotYSideResolution"
               v-model:is-showing-help="isShowingHelpForInputWithUnits"
-              :initial-expression="plotXSideResolution.toString()"
+              :initial-expression="plotYSideResolution.toString()"
+              :is-info-mode="isSquareNearField"
               title="points"
               units=""
             />
           </div>
         </div>
       </div>
+
       <div class="row justify-center items-baseline">
         <div class="col-auto text-center q-py-xs q-pr-md">
           <div :style="flexRowTitleStyle">relative side length</div>
@@ -76,7 +101,7 @@
 </template>
 
 <script lang="ts">
-import { defineComponent, computed } from 'vue';
+import { defineComponent, computed, watch } from 'vue';
 import { useStore } from 'src/store';
 import InputWithUnits from 'components/InputWithUnits.vue';
 import { flexRowTitleStyle } from 'components/config';
@@ -108,6 +133,11 @@ export default defineComponent({
         $store.commit('simulationSetup/setNearFieldRelativePlotSize', val),
     });
 
+    const isSquareNearField = computed({
+      get: () => $store.state.guiRuntime.isSquareNearField,
+      set: (val) => $store.commit('guiRuntime/setIsSquareNearField', val),
+    });
+
     // const maxComputeTime = computed({
     //   get: () => $store.state.simulationSetup.gui.nearFieldSetup.maxComputeTime,
     //   set: val => $store.commit('simulationSetup/setNearFieldMaxComputeTime', val)
@@ -134,13 +164,20 @@ export default defineComponent({
         ),
     });
 
+    watch([plotXSideResolution, isSquareNearField], () => {
+      if (isSquareNearField.value)
+        plotYSideResolution.value = plotXSideResolution.value;
+    });
+
     return {
       crossSection,
       isShowingHelpForInputWithUnits,
+      isSquareNearField,
       flexRowTitleStyle,
       relativePlotSize,
       // maxComputeTime,
       plotXSideResolution,
+      plotYSideResolution,
       nearFieldPlane,
     };
   },

+ 22 - 4
guiapp/src/components/nearfield/RunSimulationNearField.vue

@@ -62,6 +62,16 @@
             auto refine
           </q-checkbox>
         </div>
+        <div class="col-auto q-px-sm">
+          <q-btn
+            no-caps
+            flat
+            icon="restart_alt"
+            color="primary"
+            label="reset"
+            @click="resetZoom()"
+          />
+        </div>
       </div>
     </div>
   </div>
@@ -232,10 +242,11 @@ export default defineComponent({
 
     function refineOnZoom() {
       if (sideX.value == 0 || sideY.value == 0) return;
-      $store.commit(
-        'simulationSetup/setNearFieldRelativePlotSize',
-        sideX.value / 2.0
-      );
+      $store.commit('guiRuntime/setIsSquareNearField', false),
+        $store.commit(
+          'simulationSetup/setNearFieldRelativePlotSize',
+          sideX.value / 2.0
+        );
       $store.commit(
         'simulationSetup/setNearFieldPlotXSideResolution',
         floor(Math.sqrt((totalPoints.value * sideX.value) / sideY.value))
@@ -288,6 +299,13 @@ export default defineComponent({
       runNearFieldSimulation,
       refineOnZoom,
       isAutoRefineNearField,
+      resetZoom() {
+        $store.commit('simulationSetup/setNearFieldAtRelativeZ0', 0);
+        $store.commit('simulationSetup/setNearFieldAtRelativeY0', 0);
+        $store.commit('simulationSetup/setNearFieldAtRelativeX0', 0);
+        $store.commit('simulationSetup/setNearFieldRelativePlotSize', 3.0);
+        runNearFieldSimulation();
+      },
     };
   },
 });

+ 3 - 0
guiapp/src/store/gui-runtime/mutations.ts

@@ -15,6 +15,9 @@ function compare(a: material, b: material) {
 }
 
 const mutation: MutationTree<grsi> = {
+  setIsSquareNearField(state: grsi, val: boolean) {
+    state.isSquareNearField = val;
+  },
   setIsSaveWithPythonScript(state: grsi, val: boolean) {
     state.isSaveWithPythonScript = val;
   },

+ 2 - 0
guiapp/src/store/gui-runtime/state.ts

@@ -12,6 +12,7 @@ export interface guiRuntimeStateInterface {
   safeToWL: number;
   isSaveWithPythonScript: boolean;
   isAutoRefineNearField: boolean;
+  isSquareNearField: boolean;
   nearFieldZoom: { fromX: number; toX: number; fromY: number; toY: number };
 }
 
@@ -26,6 +27,7 @@ function state(): guiRuntimeStateInterface {
     isSaveWithPythonScript: true,
     nearFieldZoom: { fromX: 0, toX: 1, fromY: 0, toY: 1 },
     isAutoRefineNearField: true,
+    isSquareNearField: true,
     activatedMaterials: [
       // 'PEC',
       {