source: palm/trunk/SCRIPTS/palm_gf_files/alternative_logic.py @ 4874

Last change on this file since 4874 was 4869, checked in by schwenkel, 4 years ago

update palm_gf to python3

File size: 2.4 KB
Line 
1 
2
3    def get_allowed_number_of_cores_for_grid(self, grid, min_procs, max_procs):
4
5        nx = grid.nx - 1
6        ny = grid.ny - 1
7        nz = grid.nz - 1
8
9        anc = list()
10        for np_used in range(min_procs, max_procs+1):
11
12            for npex in range(1, np_used+1):
13
14                allowed = True
15
16                # strict matching in nodes (all nodes are used completely)
17                if self.tasks_per_node != 0:
18                    if np_used % self.tasks_per_node != 0:
19                        allowed = False
20
21                if np_used % npex != 0:
22                    allowed = False
23
24                npey = int(np_used / npex)
25
26                # if fixed ratio is requested
27                if self.npex_d_npey != 0.0 and npex / npey != self.npex_d_npey:
28                    allowed = False
29
30                # nx restlos teilbar auf npex
31                if (nx + 1) % npex != 0:
32                    allowed = False
33                # ny restlos teilbar auf npey
34                if (ny + 1) % npey != 0:
35                    allowed = False
36
37                if self.nx_d_ny != 0.0 and float(nx) / float(ny) != float(self.nx_d_ny):
38                    allowed = False
39
40                if self.multi_grid is True and (nx + 1) % 2 != 0:
41                    allowed = False
42                if self.multi_grid is True and (ny + 1) % 2 != 0:
43                    allowed = False
44                if self.multi_grid is True and nz % 2 != 0:
45                    allowed = False
46
47                if self.switch is True and (nx + 1) % npey != 0:
48                    allowed = False
49                if self.switch is True and (ny + 1) % npex != 0:
50                    allowed = False
51
52                if self.poisfft is True and nz % npex != 0:
53                    allowed = False
54
55                if npex > nx:
56                    allowed = False
57                if npey > ny:
58                    allowed = False
59
60                if self.spectra is True and nz % npey != 0:
61                    allowed = False
62
63                if self.tempterton is True and nx > 1 and ny > 1 and self.temperton_check(nx, ny) == 0:
64                    allowed = False
65
66                npxnpy = format(float(npex) / float(npey), '.2f')
67                nxpex = float(nx + 1) / float(npex)
68                nypey = float(ny + 1) / float(npey)
69
70                if allowed:
71                    anc.append((nx, ny, nz, npex, npey, npxnpy, (npex * npey), (nx * ny * nz), nxpex, nypey))
72        return anc
Note: See TracBrowser for help on using the repository browser.