Code and Other Stuff

Page for my github account. All important repos descibed here.


Welcome to my GitHub page

This page is place where my most important projects are showcased.

EVI-DSS

The project EVI-DSS is a decision support system for electric vehicle infrastructure (EVI) design commissioned by the Washington State Department of Transportation. The underlying modeling framework is general enough that the tool can be used at any scale, any where. The detailed documentation for the project with links to the code can be found here.

demand_acep

Working with Yohan Min and Atinuke Ademola-Idowu, I developed a data-pipeline to process high-resolution power meter time series data for the Alaska Center of Energy and Power with the goal of quantifying the savings in demand charges by meter aggregation. The resulting python package demand_acep is available open-source for general consumption.

FINEXT

Finite Element Analysis(FEA) is typically constrained in the domain of desktop, massive workstations, requiring installation and limiting access with licenses. FINEXT is an attempt to alleviate some of the problems of desktop based FEA solutions. It allows modelling from the browser, and then the model is solved in the cloud and result served back to you. This means, you do not have to install anything and work on your model from anywhere, ever your mobile device. Written completely in JavaScript, FINEXT, based on client-server architecture, allows for clear separation of concerns and would eventually allow switching either without affecting the other. Details of the current implementation and code explanation here.

Weather Station Server

The backend-server written in NodeJS interacts with the data-acquisition system and queries for weather data. The response is the parsed, stored in a local mongodb data database, uploaded to a cloud mongodb instance, uploaded to world weather aggregators like openweathermap.org and served to browser, all in real-time. On the browser, a minimal AngularJS app receives the data as it arrives and creates a table on the fly, so as the code is robust even for new sensor additions on the weather station. Details about the architecture, instrumentation and code here.

Controlling Analysis & Design Software Programmatically

STAAD Pro V8i

One of the most popular package for analysis and design of concrete and steel structures, it does'nt, natively play well with other applications like AUTOCAD, or EXCEL which are essentially the part of the process workflow. Thankfully, it exposes most of the functionality through it API - OpenSTAAD. Macros can be written in VBA inside STAAD that be used to control it, a few examples, introduction to the API and code explanation here.

If however, you need to do something, not supported by the API currently like, for example, reading the design results, then one might have to resort more arcane approach of parsing the results file, a tedious and error-prone task, as output standards are never documented, and one has to rely on reading and understanding the results text file. Files with extension ANL generated by STAAD can be opened in a text-editor and hence, be parsed by any program. One such attempt using regular expressions to read through the file and extracting useful model information in VC++ in this repo.

ABAQUS

A general FEA solution, ABAQUS has very detailed UI that makes it difficult for beginners to make changes to model quickly. Thankfully, they provide pretty powerful python and C++ APIs to affect the changes programmatically. Often helpful in using the API, is the auto-generated JNL file in the working directory, which has, in python, each and every step as performed through the UI. This makes using the API a breeze for when some complicated UI jugglery is involved. This python code reads the model-info like length, width and height of beam from an excel file and then updates the model. It then waits for the model to be solved based on the load and applied boundary conditions and then exports the results to an excel file.

This programmatic approach can really help in performing parametric studies on models where analysis has to be done numerous times after making some changes in the base model. The API also enables in the creation of custom UIs on top of the existing software enabling ease of use for special cases.

TIVA-C Launchpad - Analog-to-Digital Converter

TIVA-C Launchpad is a low-cost general purpose cortex-M3 based micro-controller board from Texas Instruments. It allows interfacing of with various sensors, actuators and control systems using variety of communication options including serial, I2C, SPI etc.

Various sensors like strain gages, load cells, LVDTs find application in Civil Engineering experimentation, and require costly data-acquisitions systems for recording of data and interfacing with PCs. This makes digital experiments to be limited to well-funded research labs and require constant support from system vendors, as in essence, their operation and programming is typical to that system.

A general-purpose board like TIVA-C launchpad, might not be a total replacement for industrial grade data-acquisition systems, they provide good starting points in learning the concepts of instrumentation, and for some cases be adequate for the problem at hand.

To illustrate the use of the board, and for general experiments involving analog sensors, code was developed and tested using a potentiometer as a sensor. Code 1 triggers the ADC conversion after a fixed interval, while Code 2 triggers the ADC conversion upon a switch press. The code converts the analog signal to a digital value and then sends it to the connected UART device, normally a PC. Interfacing can be written on the PC to read this value and store it or relay it as per the requirement.