{ "auto_complete": { "selected_items": [ ] }, "buffers": [ { "contents": "#include \n\n// ---\n// Header includes\n#include \"base/base_inc.h\"\n#include \"os/os_inc.h\"\n\n\n// CUDA headers\n#include \"kernels.h\"\n\n// ---\n// .C includes\n#include \"base/base_inc.c\"\n#include \"os/os_inc.c\"\n#include \"os/os_entry_point.c\"\n\n\n#define grid_file_path_bin \"D:\\\\dev\\\\eigsol_gpu\\\\out\\\\grid.bin\"\n#define grid_file_path \"D:\\\\dev\\\\eigsol_gpu\\\\out\\\\grid.dat\"\n\nglobal U32 enable_logging = 1;\n\n// Complex number with double precision\ntypedef struct Z64 Z64;\nstruct Z64\n{\n F64 re;\n F64 im;\n};\n\ntypedef struct Grid Grid;\nstruct Grid \n{\n F64 start;\n F64 end;\n U32 num_steps;\n F64 *points;\n};\n\n\ntypedef struct BSplineCtx BSplineCtx;\nstruct BSplineCtx \n{\n U32 order;\n U32 num_knotpoints;\n U32 num_bsplines;\n U32 num_phys_points;\n};\n\n\n\n//~ Globals\nglobal BSplineCtx bspline_ctx = {0};\n\n//~ Functions\n\nfunction inline void\nlogger_debug(String8 msg)\n{\n OutputDebugString(msg.str);\n}\n\n#define LOG(msg) if(enable_logging) { logger_debug(msg) };\n\n\nfunction void\nwrite_array_binary_F64(String8 path_to_file, F64 *values, U32 array_size) \n{\n OS_Handle file_handle = OS_file_open(OS_AccessFlag_Write | OS_AccessFlag_CreateNew, \n path_to_file);\n { \n ArenaTemp scratch = scratch_get(0, 0);\n String8List list = {0};\n String8 temp = {0};\n temp.str = (U8*)values;\n temp.size = sizeof(F64)*array_size;\n str8_list_push(scratch.arena, &list, temp);\n OS_file_write(scratch.arena, file_handle, 0, list, 0);\n \n String8List log_list = {0};\n str8_list_push(scratch.arena, &log_list, str8_lit(\"Wrote binary array data to\"));\n str8_list_push(scratch.arena, &log_list, path_to_file);\n StringJoin join = {0};\n join.sep = str8_lit(\" \");\n join.post = str8_lit(\"\\n\");\n String8 log_msg = str8_list_join(scratch.arena, log_list, &join);\n OutputDebugString(log_msg.str);\n }\n OS_file_close(file_handle);\n}\n\nfunction void\nwrite_array_F64(String8 path_to_file, F64 *values, U32 array_size, char* fmt) \n{\n OS_Handle file_handle = OS_file_open(OS_AccessFlag_Write | OS_AccessFlag_CreateNew, \n path_to_file);\n {\n ArenaTemp scratch = scratch_get(0, 0);\n String8List list = {0};\n for(U32 i = 0; i < array_size; i++) \n {\n str8_list_pushf(scratch.arena, &list, fmt, values[i]);\n }\n OS_file_write(scratch.arena, file_handle, 0, list, 0);\n \n String8List log_list = {0};\n str8_list_push(scratch.arena, &log_list, str8_lit(\"Wrote array to\"));\n str8_list_push(scratch.arena, &log_list, path_to_file);\n StringJoin join = {0};\n join.sep = str8_lit(\" \");\n join.post = str8_lit(\"\\n\");\n String8 log_msg = str8_list_join(scratch.arena, log_list, &join);\n OutputDebugString(log_msg.str);\n }\n OS_file_close(file_handle);\n \n}\n\n\n\nfunction\nvoid EntryPoint() \n{\n OS_InitReceipt os_receipt = OS_init();\n OS_InitGfxReceipt os_gfx_receipt = OS_gfx_init(os_receipt);\n\n Arena *arena = m_make_arena();\n\n Grid grid = {0};\n grid.start = 0.0;\n grid.end = 10.0;\n grid.num_steps = 1000;\n \n grid.points = PushArrayZero(arena, F64, grid.num_steps);\n F64 step_size = (grid.end-grid.start)/(F64)grid.num_steps;\n grid.points[0] = grid.start;\n grid.points[grid.num_steps-1] = grid.end;\n for(U32 i = 1; i < grid.num_steps-1; i++)\n {\n grid.points[i] = grid.points[i-1] + step_size;\n }\n\n write_array_binary_F64(str8_lit(grid_file_path_bin), grid.points, grid.num_steps);\n write_array_F64(str8_lit(grid_file_path), grid.points, grid.num_steps, \"%13.6e\\n\");\n \n // Create bsplines\n U32 k = 4;\n U32 N = 14;\n bspline_ctx.order = k; \n bspline_ctx.num_knotpoints = N; \n U32 num_bsplines = N-k;\n U32 num_phys_points = N-2*k+2; // Remove k points at each end, and then add back the first and last points.\n\n\n\n}\n\n\n", "file": "src/main.c", "file_size": 3834, "file_write_time": 133732027810885494, "settings": { "buffer_size": 3679, "encoding": "UTF-8", "line_ending": "Windows" } } ], "build_system": "Packages/C++/C Single File.sublime-build", "build_system_choices": [ [ [ [ "Packages/C++/C Single File.sublime-build", "" ], [ "Packages/C++/C Single File.sublime-build", "Run" ] ], [ "Packages/C++/C Single File.sublime-build", "" ] ] ], "build_varint": "", "command_palette": { "height": 0.0, "last_filter": "", "selected_items": [ [ "View", "View Package File" ], [ "Color", "Colorsublime: Install Theme" ], [ "Pack", "Package Control: Install Package" ], [ "Install Pack", "Package Control: Install Package" ], [ "Package Insta", "Package Control: Install Package" ], [ "Color Sch", "UI: Select Color Scheme" ], [ "Install Pac", "Package Control: Install Package" ], [ "Package", "Install Package Control" ], [ "View ", "View Package File" ] ], "width": 0.0 }, "console": { "height": 0.0, "history": [ ] }, "distraction_free": { "menu_visible": true, "show_minimap": false, "show_open_files": false, "show_tabs": false, "side_bar_visible": false, "status_bar_visible": false }, "expanded_folders": [ "/W/eigsol_gpu", "/W/eigsol_gpu/src" ], "file_history": [ "/C/Users/anton/AppData/Roaming/Sublime Text 3/Packages/Default/Default (Windows).sublime-keymap", "/C/sbs/sb1/java/guidesign/src/com/comsol/guidesign/views/%USER%", "/C/Users/antonlj/AppData/Roaming/Sublime Text 3/Packages/Colorsublime/Colorsublime.sublime-settings", "/C/Users/antonlj/AppData/Roaming/Sublime Text 3/Packages/User/Colorsublime.sublime-settings", "/C/sbs/sb1/java/guidesign/src/com/comsol/guidesign/actions/DesignCreatorActionFactory.java", "/C/sbs/sb1/java/design/src/com/comsol/design/operations/DesignOperation.java", "/C/Users/antonlj/AppData/Roaming/Sublime Text 3/Packages/Default/symbol.py", "/C/Program Files/Sublime Text 3/Packages/Default.sublime-package", "/C/Users/antonlj/AppData/Roaming/Sublime Text 3/Packages/User/Preferences.sublime-settings", "/C/sbs/sb1/java/testgui/src/com/comsol/testgui/builder/TBuilderFeatures.java", "/C/Users/antonlj/AppData/Roaming/Sublime Text 3/Packages/Default/Preferences.sublime-settings" ], "find": { "height": 40.0 }, "find_in_files": { "height": 103.333333333, "where_history": [ ] }, "find_state": { "case_sensitive": false, "find_history": [ "main.c" ], "highlight": true, "in_selection": false, "preserve_case": false, "regex": false, "replace_history": [ ], "reverse": false, "show_context": true, "use_buffer2": true, "whole_word": false, "wrap": true }, "groups": [ { "selected": 0, "sheets": [ { "buffer": 0, "file": "src/main.c", "semi_transient": false, "settings": { "buffer_size": 3679, "regions": { }, "selection": [ [ 2699, 2699 ] ], "settings": { "syntax": "Packages/C++/C.sublime-syntax", "tab_size": 2, "translate_tabs_to_spaces": true }, "translation.x": 0.0, "translation.y": 1552.0, "zoom_level": 1.0 }, "stack_index": 0, "type": "text" } ] } ], "incremental_find": { "height": 25.0 }, "input": { "height": 0.0 }, "layout": { "cells": [ [ 0, 0, 1, 1 ] ], "cols": [ 0.0, 1.0 ], "rows": [ 0.0, 1.0 ] }, "menu_visible": true, "output.exec": { "height": 267.0 }, "output.find_results": { "height": 0.0 }, "pinned_build_system": "", "project": "eigsol_gpu.sublime-project", "replace": { "height": 46.0 }, "save_all_on_build": true, "select_file": { "height": 0.0, "last_filter": "", "selected_items": [ [ "main", "src\\main.c" ], [ "BuilderInf", "design\\src\\com\\comsol\\design\\util\\link\\BuilderInfoVisitor.java" ], [ "DesignPhysicsM", "design\\src\\com\\comsol\\design\\DesignPhysicsMaker.java" ], [ "TBuilderFeat", "testgui\\src\\com\\comsol\\testgui\\builder\\TBuilderFeatures.java" ] ], "width": 0.0 }, "select_project": { "height": 0.0, "last_filter": "", "selected_items": [ ], "width": 0.0 }, "select_symbol": { "height": 392.0, "last_filter": "DesignPhysicsMak", "selected_items": [ [ "DesignPhysicsMak", "DesignPhysicsMaker" ], [ "DeviceModelFeatu", "DeviceModelFeatureOperation" ] ], "width": 644.0 }, "selected_group": 0, "settings": { }, "show_minimap": false, "show_open_files": false, "show_tabs": true, "side_bar_visible": false, "side_bar_width": 145.0, "status_bar_visible": true, "template_settings": { } }