카테고리 없음

Lode Phase Difference 분석을 위한 해석 결과

이센 2025. 6. 10. 01:18

[ 분석 결과 ]  

 

FDTD Simulation Results on Double Lodes Structure

 

 

[ EMW ]

#setdep @node|tensor_mesh@


##define BARL 0.164  
#define WIDTH 1.0
#define DEPTH 1.2

Globals {

    GridFile      = "n@node|tensor_mesh@_msh.tdr"
    ParameterFile = "sdevice.par"
    LogFile 	  = "n@node@_eml.log"
    TotalTimeSteps = 50000
    NumberOfThreads = 4
    InspectFile      = "n@node@_eml.plt"
    Oversampling = 1.2  ** if any convergence problems appear, or dispersive materials are present, use Oversampling between 1.1-2.0
}

ComplexRefractiveIndex {
    WavelengthDep = {Real, Imag}
}


Boundary {
  Type  = PeriodicOblique
  Sides = {X,Y}
} 

Boundary {
  Type = CPML
  Sides = {Z}
  Thickness= 90
}


 

PlaneWaveExcitation{   
	## Exciatation distance from device is 0.3 um (60 cells).
	## Area of box does not affect the results. (Always full to domain size)
     BoxCorner1 = (0, 0, 3.8) 							  # um   
     BoxCorner2 = (WIDTH, WIDTH, 3.8)  # um

	## The wave with Theta=90 & Phi=180 is perpendicular to device, from X- to X+ direction.
	## <Z+ means wave propagates to the Z=A -> Z=wB direction (A < B) with constant Y
	## Theta -> 80 & Phi=180 has incident angle <Z+ = 10 degree
	## Theta -> 100 & Phi=180 has incident angle <Z- = 10 degree
	## Theta=90 & Phi -> 170 has incident angle <Y+ = 10 degree
	## Theta=90 & Phi -> 190 has incident angle <Y- = 10 degree
  Signal = harmonic
  Theta      = @theta@
  Phi        = @phi@
  Psi        = 45                                 
  Wavelength = @wavelength@ # nm
  Intensity  = 1e-5 # W/cm2 
                      ## & 1 lux = 0.0079 W/m2 & bright sunlight = 120000 lux = 948 W/m2
		       # Global solar spectrum sunlight => 109880 lux = 1000 W/m2
  Nrise      =  5   # number of signal periodeds until full power
  Delay	     = 0	
}

Plot {                                          
  Name      = "n@node@_Eabs_DFISE"
  GridFile = "n@node|full_mesh@_msh.tdr"
  Quantity  = {AbsElectricField, AbsMagneticField, RealElectricField, realelectricfieldX, realelectricfieldy, realelectricfieldz, ImagElectricField, ImagElectricFieldX, ImagElectricFieldY, ImagElectricFieldZ, Region}
  FinalPlot = yes
  TickStep= 5000
}

Extractor {
  Quantity = {absorbedPhotonDensity, PowerFluxDensity,OpticalGeneration, Region}
  Name     = "n@node@_emw_g_full"
  GridFile = "n@node|full_mesh@_msh.tdr"
}

## R: PhotonFluxDensity
## T: PhotonFluxDensity
## A: AbsorbedPhotonDensity
## RTA { StartTick = 0 Log = { Rnorm, Tnorm, Anorm }

Sensor {
  Name = "reflected"
  Quantity = PowerFluxDensity
  BoxCorner1 = (0, 0, 3.9)
  BoxCorner2 = (WIDTH, WIDTH, 3.9}
  Mode = {Integrate}
}


Sensor {
  Name       = "total"
  Quantity   = PowerFluxDensity
  BoxCorner1 = (0, 0, 3.7)
  BoxCorner2 = (WIDTH, WIDTH, 3.7)
  Mode       = {Integrate}
}


Sensor {
  Name = "transmitted"
  Quantity = PowerFluxDensity
  BoxCorner1 = (0, 0, -1.5)
  BoxCorner2 = (WIDTH, WIDTH, -1.5}
  Mode = {Integrate}
}


Sensor {
  Name       = "absorbedPower"
  Quantity   = AbsorbedPowerDensity
  ## Region     = {"Substrate"}   
  BoxCorner1 = (0, 0, 0)
  BoxCorner2 = (WIDTH, WIDTH, 1.2)
  Mode       = {Integrate}
}

#if @Array@ == 3

Sensor {
   Name = "absorbed_PD22"
   Quantity = AbsorbedPowerDensity
   Region = "region22_Si"
   Mode = {Integrate}
}

#endif 


#if @Array@ == 4

Sensor {
   Name = "absorbed_PD22"
   Quantity = AbsorbedPowerDensity
   Region = "region22_Si"
   Mode = {Integrate}
}

Sensor {
   Name = "absorbed_PD33"
   Quantity = AbsorbedPowerDensity
   Region = "region33_Si"
   Mode = {Integrate}
}


#endif

tdx 사용을 통한 dat, grd file 확보

[ PYTHON ]  

import os
import subprocess
import numpy as np

tdr_file = "n@node|emw@_Eabs_DFISE_eml.tdr"
dat_file = "n@node@_Eabs_DFISE_eml.dat"
grd_file = "n@node@_Eabs_DFISE_eml.grd"
vtk_file = "n@node@_Eabs_DFISE_eml.vtk"

basename = os.path.splitext(tdr_file)[0]
field = "Eabs"

print(" tdr_file :", tdr_file)
print(" dat_file :", dat_file)
print(" grd_file :", grd_file)
print(" tdx running... ")

subprocess.run(["tdx", "-dd", tdr_file, dat_file, grd_file], check=True)
##subprocess.run(["tdx", "-i",tdr_file,"-grd","-dat","-all"], check=True)

print(" tdr -> grd/dat trasnsition is completed")

 

파일 크기 한계 때문에 알집 egg file 을 통해 올림. 결과 파일은 n652_Eabs_DFISE_eml.tdr 이며 tdx 명령을 통해 grd, dat 파일로 변환해서 사용해야 함.  

n652_Eabs_DFISE_eml.vol1.egg
10.00MB
n652_Eabs_DFISE_eml.vol2.egg
10.00MB
n652_Eabs_DFISE_eml.vol3.egg
10.00MB
n652_Eabs_DFISE_eml.vol4.egg
6.00MB