-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDeviceSpatz.py
More file actions
100 lines (84 loc) · 3.59 KB
/
DeviceSpatz.py
File metadata and controls
100 lines (84 loc) · 3.59 KB
1
#setupimport randomimport uuidimport numpy as npimport timeimport itertoolsfrom SimulationManager import SimulationManager, SimulationGroupif __name__ == "__main__": starttime = time.perf_counter() simulationDir = '/local/kzisiadis/multiple_groups/nematic_one_snaking_and_snaking_control_group' # simulationDir = r'E:\simulationdata\variing_interaction_strength_with_oscillation' simulationManager = SimulationManager(simulationDir) simulationConfigs = [ { 'rho': [4], 'eta': [3], 'interactionStrengthFactor': [0.15], 'groups': [ { '1': { 'numSwimmers': 1000, 'snakingAmplitude': np.pi/8, 'snakingPeriod': 30, 'snakingPhaseshift': 0 }, '2': { 'numSwimmers': 1000, 'snakingAmplitude': 0, 'snakingPeriod': 30, 'snakingPhaseshift': 0 } }, { '1': { 'numSwimmers': 1000, 'snakingAmplitude': np.pi / 16, 'snakingPeriod': 30, 'snakingPhaseshift': 0 }, '2': { 'numSwimmers': 1000, 'snakingAmplitude': np.pi / 16, 'snakingPeriod': 30, 'snakingPhaseshift': 0 }, } ] }, ] for configEntry in simulationConfigs: for config in itertools.product(configEntry['rho'], configEntry['eta'], configEntry['interactionStrengthFactor'], configEntry['groups']): rho = config[0] eta = config[1] interactionStrengthFactor = config[2] groups = config[3] numSwimmer = 0 for group in groups.values(): numSwimmer += group['numSwimmers'] environmentSideLength = np.sqrt(numSwimmer/rho) def configFunction(simulationIndex, numSimulation, envL=environmentSideLength, e=eta, g=groups): constants = { "timeSteps": 7500, "environmentSideLength": envL, "interactionRadius": 1, "randomAngleAmplitude": e * (simulationIndex / numSimulation), "interactionStrengthFactor": interactionStrengthFactor, "groups": g, "velocity": 0.0025, "swimmerSize": 0.04, "saveVideo": False, } return constants # phaseShiftString = ','.join(f'{str(np.round(x/np.pi, 2))}pi' for x in phaseShifts) id = uuid.uuid4() simulationDataDir = simulationDir + f'/va_over_eta_multiple_groups_{id}' sameRhoSimulationGroup = SimulationGroup(simulationDataDir=simulationDataDir, configFunction=configFunction, numSimulation=25, repeatNum=100, timePercentageUsedForMean=25, saveTrajectoryData=False) simulationManager.appendGroup(sameRhoSimulationGroup) simulationManager.simulate() print('That took {} seconds'.format(time.perf_counter() - starttime))