Аллоҳга сажда қил, у сени бандасига сажда қилишдан асрайди

Studying the influence of base thickness on photoelectric parameters of various silicon solar cell with the new TCAD algorithms

Appendix 1.

(do ((i 0 (+ i 1))) ((= i fc_n))
(define fcname (string-append "fc_" (number->string i)))
(define x1 (* (/ d_l fc_n) i)) (define x2 (+ x1 fc_l)) (define x3 (+x1 (/ fc_l 2)))
(sdegeo:create-rectangle (position x1 0 0) (position x2 fc_th 0) "Silicon" fcname)
(if (= ordr 1)
(begin (sdegeo:set-contact (find-edge-id (position x3 0 0)) "cathode"))
(begin (sdegeo:set-contact (find-edge-id (position x3 0 0)) "anode"))))
	

Here "anode" and "cathode" are previously defined contacts. The code for drawing the main body of the structures, i.e. types p and n:

(cond ((= ordr 1)
(begin (sdegeo:create-rectangle
(position 0 fc_th 0) (position d_l (+fc_th n_th) 0) "Silicon" "n_type")
(sdegeo:create-rectangle (position 0 (+fc_th n_th) 0) (position d_l (+fc_th n_th p_th) 0) "Silicon" "p_type")))
((= ordr 2)
(begin (sdegeo:create-rectangle (position 0 fc_th 0) (position d_l (+fc_th p_th) 0) "Silicon" "p_type"	)
(sdegeo:create-rectangle (position 0 (+fc_th p_th) 0) (position d_l (+fc_th p_th n_th) 0) "Silicon" "n_type"))))
	

For the back contact, the script is written:

(do ((i 0 (+ i 1))) ((= i bc_n))
(define bcname (string-append "bc_" (number->string i)))
(if (>bc_n 1)
(begin (define dx (/ (- d_l (* bc_n bc_l)) (- bc_n 1))))
(begin (define dx 0)))
(define x1 (* (+ bc_l dx) i)) (define x2 (+ x1 bc_l)) (define x3 (+x1 (/ bc_l 2)))
(define y1 (+ fc_th n_th p_th bc_th))
(sdegeo:create-rectangle (position x1 y1 0) (position x2 (- y1 bc_th) 0) "Silicon" bcname)
(if (= ordr 2)
(begin (sdegeo:set-contact (find-edge-id (position x3 y1 0)) "cathode"))
(begin (sdegeo:set-contact (find-edge-id (position x3 y1 0)) "anode"))))

Appendix 2.

(if l6
(begin
(do ((i deltax (+ i deltax))) ((>= i d_l))
(begin
(if (= ordr 1)
(begin (sdegeo:insert-vertex (position i (+ fc_th n_th) 0)))
(begin (sdegeo:insert-vertex (position i (+ fc_th p_th) 0))))))
(do ((i deltax (+ i deltax))) ((>= i d_l))
(begin (define myangle (sin (/ (* 2 fnum PI i) d_l)))
(if (= ordr 1)
(begin (sdegeo:move-vertex (car (find-vertex-id (position i (+ fc_th n_th) 0)))
(position i (+ (* myangle deltay ) n_th fc_th) 0)))
(begin (sdegeo:move-vertex (car (find-vertex-id (position i (+ fc_th p_th) 0)))
(position i (+ (* myangle deltay ) p_th fc_th) 0))))))))
	

6-project structure is radically different from other projects. Therefore, the geometric structure of this project is drawn separately. Since the front contact is the same as in other projects, it is left unchanged. Before drawing the back contacts, an algorithm for drawing areas p and n is presented:

(sdegeo:create-rectangle
(position 0 fc_th 0) (position d_l (+ fc_th n_th p_th) 0) "Silicon" "p_type")
(define ps 0.8) (define dx (/ d_l bc_n)) (define np (* dx b_clp)) (define pp (- dx np))
(if (> bc_l (* ps np))
(begin (define bcl1 (* ps np))) (begin (define bcl1 bc_l)))
(if (> bc_l (* ps pp)) (begin (define bcl2 (* ps pp))) (begin (define bcl2 bc_l)))
(define y1 (+ fc_th p_th)) (define y2 (+ y1 n_th)) (define y3 (+ y2 bc_th))
(do ((i 0 (+ i 1)))
((= i bc_n))
(begin
(define x1 (* dx i)) (define x2 (+ x1 np)) (define x3 (+ x1 (/ (- np bcl1) 2)))
(define x4 (+ x2 (/ (- pp bcl2) 2))) (define x5 (+ x3 (/ bcl1 2))) (define x6 (+ x4 (/ bcl2 2)))
(define NtypeReg (string-append "n_type_" (number->string i)))
(define BcNConReg (string-append "backcontact_n_" (number->string i)))
(define BcPConReg (string-append "backcontact_p_" (number->string i)))
(sdegeo:create-rectangle (position x1 y1 0) (position x2 y2 0) "Silicon" NtypeReg)
(sdegeo:create-rectangle (position x3 y2 0) (position (+ x3 bcl1) y3 0) "Silicon" BcNConReg)
(sdegeo:set-contact (find-edge-id (position x5 y3 0)) "cathode")
(sdegeo:create-rectangle (position x4 y2 0) (position (+ x4 bcl2) y3 0) "Silicon" BcPConReg)
(sdegeo:set-contact (find-edge-id (position x6 y3 0)) "anode")))