; ===================================================================================== ; STRUCTURE DEFINITION ; ===================================================================================== ; _WAVEGUIDE_WIDTH_ ; 0.12 mkm standard ; _WAVEGUIDE_1_POSITION_ ; = 2.132 + _WAVEGUIDE_WIDTH_ ; _WAVEGUIDE_2_POSITION_ ; = 2.12 - _WAVEGUIDE_WIDTH_ (sdegeo:create-rectangle (position 0 0.5 0) (position 2 _WAVEGUIDE_2_POSITION_ 0) "AlGaAs" "n-emitter" ) ; 1.5 mkm (sdegeo:create-rectangle (position 0 _WAVEGUIDE_2_POSITION_ 0) (position 2 2.12 0) "AlGaAs" "waveguide_2" ) ; 0.12 mkm (sdegeo:create-rectangle (position 0 2.12 0) ; (position 2 2.129 0) ; 0.009 mkm (position 2 2.132 0) ; 0.012 mkm "AlGaAs" "a_o" ) (sdegeo:create-rectangle ; (position 0 2.129 0) (position 0 2.132 0) (position 2 _WAVEGUIDE_1_POSITION_ 0) "AlGaAs" "waveguide_1" ) ; 0.12 mkm (sdegeo:create-rectangle (position 0 _WAVEGUIDE_1_POSITION_ 0) (position 2 3.749 0) "AlGaAs" "p-emitter" ) ; 1.5 mkm ; define and set contacts =========================================================================== ; use set-contact-boundary-edges NOT set-contact-boundary-faces in 2D case !!!!!!!!!!!!!!!!!!!!!!!!!! (sdegeo:define-contact-set "n_contact" 1 (color:rgb 0 1 0 ) "||" ) (sdegeo:set-current-contact-set "n_contact") (sdegeo:set-current-contact-set "n_contact") ; must be twice. There is a problem otherwise (sdegeo:define-2d-contact (list (car (find-edge-id (position 0.5 0.5 0)))) "n_contact") (sdegeo:define-contact-set "p_contact" 1 (color:rgb 0 0 1 ) "==" ) (sdegeo:set-current-contact-set "p_contact") (sdegeo:set-current-contact-set "p_contact") ; must be twice. There is a problem otherwise (sdegeo:define-2d-contact (list (car (find-edge-id (position 0.5 3.749 0)))) "p_contact") ; ===================================================================================== ; DOPING PROFILES ; ===================================================================================== (sdedr:define-constant-profile "n-emitter-doping-Definition" "ArsenicActiveConcentration" _NDOPING_) (sdedr:delete-refeval-window "RefEvalWin_2" ) (sdedr:define-refeval-window "RefEvalWin_2" "Rectangle" (position 0 0.5 0) (position 2 _WAVEGUIDE_2_POSITION_ 0) ) (sdedr:define-constant-profile-placement "n-emitter-doping-placement" "n-emitter-doping-Definition" "RefEvalWin_2" 0 "Replace") (sdedr:define-constant-profile "p-emitter-doping-Definition" "BoronActiveConcentration" _PDOPING_) (sdedr:delete-refeval-window "RefEvalWin_3" ) (sdedr:define-refeval-window "RefEvalWin_3" "Rectangle" (position 0 _WAVEGUIDE_1_POSITION_ 0) (position 2 3.749 0) ) (sdedr:define-constant-profile-placement "p-emitter-doping-placement" "p-emitter-doping-Definition" "RefEvalWin_3" 0 "Replace") (sdedr:define-constant-profile "waveguide_1-doping-Definition" "BoronActiveConcentration" _WG1DOPING_) (sdedr:delete-refeval-window "RefEvalWin_5" ) (sdedr:define-refeval-window "RefEvalWin_5" "Rectangle" (position 0 2.132 0) (position 2 _WAVEGUIDE_1_POSITION_ 0) ) (sdedr:define-constant-profile-placement "waveguide_1-doping-placement" "waveguide_1-doping-Definition" "RefEvalWin_5" 0 "Replace") (sdedr:define-constant-profile "waveguide_2-doping-Definition" "ArsenicActiveConcentration" _WG2DOPING_) (sdedr:delete-refeval-window "RefEvalWin_6" ) (sdedr:define-refeval-window "RefEvalWin_6" "Rectangle" (position 0 _WAVEGUIDE_2_POSITION_ 0) (position 2 2.12 0) ) (sdedr:define-constant-profile-placement "waveguide_2-doping-placement" "waveguide_2-doping-Definition" "RefEvalWin_6" 0 "Replace") (sdedr:define-constant-profile "a_o-doping-Definition" "ArsenicActiveConcentration" _ACTIVEDOPING_) (sdedr:delete-refeval-window "RefEvalWin_7" ) (sdedr:define-refeval-window "RefEvalWin_7" "Rectangle" (position 0 2.12 0) (position 2 2.132 0) ) (sdedr:define-constant-profile-placement "a_o-doping-placement" "a_o-doping-Definition" "RefEvalWin_7" 0 "Replace") ; ===================================================================================== ; MESHING ; ===================================================================================== ; n-emitter (sdedr:define-refinement-size "RefinementDefinition_2" 0.1 0.02 10 0.02 0.002 10 ) (sdedr:define-refinement-placement "RefinementPlacement_2" "RefinementDefinition_2" "RefEvalWin_2" ) ; p-emitter (sdedr:define-refinement-size "RefinementDefinition_3" 0.1 0.02 10 0.02 0.002 10 ) (sdedr:define-refinement-placement "RefinementPlacement_3" "RefinementDefinition_3" "RefEvalWin_3" ) ; waveguide_1 (sdedr:define-refinement-size "RefinementDefinition_5" 0.1 _WAVEGUIDE_MESHING_ 10 0.01 _WAVEGUIDE_MESHING_ 10 ) (sdedr:define-refinement-placement "RefinementPlacement_5" "RefinementDefinition_5" "RefEvalWin_5" ) ; waveguide_2 (sdedr:define-refinement-size "RefinementDefinition_6" 0.1 _WAVEGUIDE_MESHING_ 10 0.01 _WAVEGUIDE_MESHING_ 10 ) (sdedr:define-refinement-placement "RefinementPlacement_6" "RefinementDefinition_6" "RefEvalWin_6" ) (sdedr:define-refinement-size "RefinementDefinition_7" 0.05 0.006 10 0.05 0.006 10 ) (sdedr:define-refinement-placement "RefinementPlacement_7" "RefinementDefinition_7" "RefEvalWin_7" ) ; ===================================================================================== ; SAVING ; ===================================================================================== ; save model. This saves also 3D.cmd for mesh generation (sde:save-model "mesh_files/3D__FILENAME_") (sdedr:append-cmd-file "") ; ===================================================================================== ; BUILD AND SAVE MESH (sde:build-mesh "mesh" "-F tdr " "mesh_files/3D__FILENAME_")