File: run.ctl

package info (click to toggle)
libctl 3.2.2-2
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,308 kB
  • ctags: 1,178
  • sloc: sh: 11,466; ansic: 5,903; lisp: 2,311; makefile: 123
file content (69 lines) | stat: -rw-r--r-- 2,419 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
; Copyright (C) 1998, 1999, 2000, 2001, 2002, Steven G. Johnson
;
; This file may be used without restriction.  It is in the public
; domain, and is NOT restricted by the terms of any GNU license.
;
; This library is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
; Lesser General Public License for more details. 

; Sample control file (for example.scm specification).
; You should edit this file in Scheme mode if you are using emacs:
; type M-x scheme-mode or modify your .emacs file to automatically
; put .ctl files in Scheme mode.

; Define some dielectric materials:
(define GaAs (make material-type (epsilon 11.56)))
(define AlOx (make material-type (epsilon 2.25)))

; Set the dimensions.  Use set! rather than define to change the value
; of an existing variable.
(set! dimensions 2)

; Set the k-point list:
(set! k-points 
  (list
   (vector3 0 0)
   (vector3 0.5 0)
   (vector3 0.5 0.5)
   (vector3 0 0)))

; Reset the k-point list for fun, in a fancier way:
; Here, we will use the built-in interpolate function to interpolate
; points between the corners of the Brillouin zone.

(define Gamma-point (vector3 0 0))
(define X-point (vector3 0.5 0))
(define M-point (vector3 0.5 0.5))
(set! k-points (interpolate 4 (list Gamma-point X-point M-point Gamma-point)))

; Define a parameter, R, that can be set from the command-line (e.g.
; by "R=0.3", and which assumes a default value of 0.1 if not set:
(define-param R 0.1)  ; (used as the radius of the sphere, below)

; Set the geometry:

(set! geometry
      (list
       (make cylinder (material air) (center 1.5 0)
	(radius 0.2) (height 0.5) (axis 3 4))
       (make sphere (material GaAs) (center 1.1 -1.1) (radius R))
       (make block (material AlOx) (center -1 0.5) (size 0.2 1.3))
       (make block (material air) (center -1.5 -1) (size 1.2 0.3) (e2 1 1))))

; Append a 2d 3x3 lattice of cylinders to the geometry:

(set! geometry-lattice (make lattice (size 5 5 1)))

(set! geometry
      (append geometry
	      (geometric-objects-lattice-duplicates
	       (list (make cylinder (material GaAs) 
			   (center 0 0) (radius 0.1) (height 1.0))))))

(run)

; The (run) command normally turns interactive mode off; turn it back
; on so that we are dropped into a Guile command line:
(set-param! interactive? true)